Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

591
Vistas
no se puede llamar al código julia desde Python con PyCall, cuyo código llama a Python con Pycall

Tengo un algoritmo de back-end que hace llamadas de julia, lo hago a través del paquete PyCall. sin embargo, uno de los paquetes en julia se actualizó recientemente y hace uso de PyCall. No importa lo que intente hacer, siempre obtengo un error. Si configuro pycall en julia a través de Pkg.build ("PyCall"), puedo llamar al paquete, sin embargo, python no puede llamar a julia. si configuro pycall en python3 a través de julia.install(), entonces el paquete no puede ejecutarse correctamente en julia.

para reproducir esto aquí hay un ejemplo rápido:

prueba.jl

 using Pkg Pkg.add("PyCall") ENV["PYTHON"]="" Pkg.add(PackageSpec(url="https://bitbucket.org/SSamanipour/safd.jl/src/master/")) Pkg.build("SAFD") Pkg.test("SAFD")

prueba.py

 from julia import Main as jl jl.include("test.jl")

si ejecuto python3 test.py

Aparece un error porque ese python específico no está configurado en el pycall compartido.

lo que me gustaria es que el pycall en python no sea el mismo para python. parece que si configuras pycall en uno forzará el otro.

Intenté usar juliacall, sin embargo, si uso pycall con él, parece que también se rompe.

si intento tener ENV["PYTHON"]="python3" , no puedo ejecutar el paquete SAFD.

Cualquier ayuda sería muy apreciada, ya que llevo unos días en esto y probé varias soluciones y todo parece darme un error diferente.

algo de información: haciendo esto en un sistema operativo aws amazon2 linux y una instancia aws r5.large.

estoy usando python 3.10.0

versioninfo() Julia Versión 1.6.3 Commit ae8452a9e0 (2021-09-23 17:34 UTC) Información de la plataforma: SO: Linux (x86_64-pc-linux-gnu) CPU: Intel(R) Xeon(R) Platinum 8175M CPU @ 2,50 GHz TAMAÑO DE PALABRA: 64 LIBM: libopenlibm LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

EDITAR:

Terminé resolviendo el problema. El paquete que estaba tratando de usar actualizó sus dependencias, cuando se compila, actualiza automáticamente el conda python con todos los paquetes que necesita. Sin embargo, si no está construido por conda, asumirá que las dependencias están ahí. Lo que me sorprende mucho es que el mensaje de error nunca indicó nada sobre un paquete específico. Solo lo descubrí un poco al azar.

Una cosa está clara es que no puede tener dos pythons diferentes, pycall solo configura un python para ir y venir entre python y julia.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Parece que tienes 2 Python en tu sistema:

  • el primero instalado después de ENV["PYTHON"]="";Pkg.build("PyCall") --> esta es la forma predeterminada de instalar PyCall en Julia para que todo funcione (esto es en realidad un Miniconda Python)
  • sistema Python que comienzas con python3

Básicamente, mezclar esos 2 pitones y hacer que todo funcione es como encontrar una aguja en un pajar con los ojos vendados. En lugar de eso, necesita usar un Python para todo y para que las cosas funcionen sin problemas, debería ser el Miniconda Python que Julia instaló cuando hizo ENV["PYTHON"]="";Pkg.build("PyCall") .

Para encontrar Python, desea usar do en su consola Julia:

 julia> using PyCall julia> PyCall.python "/home/ubuntu/.julia/conda3/python.exe"

¡Ahora encontraste el código de Python que necesitas! Entonces, lo que ejecutas en bash es:

 /home/ubuntu/.julia/conda3/python.exe test.py
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda