Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Error when importing Python modules in Package namespace

Abierto
#1,008 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
julia, python
Área
backend

Línea de trabajo

Comienza con el ejemplo MyPkg.jl, el uso de pyimport de PyCall y el stack trace en PyCall.jl:299-318. Reproduce la diferencia entre MyPkg.my_code, MyPkg.my_code2 e include("/MyPkg.jl") en un cuaderno de Jupyter y, después, investiga el comportamiento de precompilación reportado. Se considera terminado cuando el import a nivel de paquete funciona al cargar el paquete instalado, con una prueba de regresión que cubra el caso que falla.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Hi,

I'm trying to write a standalone package that uses PyCall. I thought importing Python modules only once into the global namespace of the package MyPackage would be beneficial for performance. This works when executed in a Jupyter notebook, but not in a separate package.

Here is the code of the package MyPackage:

module MyPkg

using PyCall
np = pyimport("numpy")


function my_code(a)
    return np.mean(a)
end


function my_code2(a)
    np = pyimport("numpy")
    return np.mean(a)
end


end

Install the package and then execute the following in a Jupyter notebook:

using MyPkg

MyPkg.my_code([1., 2.])

Error message:

ArgumentError: ref of NULL PyObject

Stacktrace:
 [1] _getproperty(o::PyCall.PyObject, s::Symbol)
   @ PyCall ~/.julia/packages/PyCall/ygXW2/src/PyCall.jl:299
 [2] __getproperty
   @ ~/.julia/packages/PyCall/ygXW2/src/PyCall.jl:312 [inlined]
 [3] getproperty(o::PyCall.PyObject, s::Symbol)
   @ PyCall ~/.julia/packages/PyCall/ygXW2/src/PyCall.jl:318
 [4] my_code(a::Vector{Float64})
   @ MyPkg ~/.julia/packages/MyPkg/3Tsby/src/MyPkg.jl:9
 [5] top-level scope
   @ In[3]:1
 [6] eval
   @ ./boot.jl:368 [inlined]
 [7] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
   @ Base ./loading.jl:1428

However, this works:

using MyPkg

MyPkg.my_code2([1., 2.])

This also works:

include("<path>/MyPkg.jl")
MyPkg.my_code([1., 2.])

I suspect that the precompilation is somehow interfering, but I know far too little about how imports work in Julia or how PyCall works to be sure.

Lenguaje dominante
Julia
Estrellas
1.5k
Forks
186
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaPy/PyCall.jl

Todos los issues de JuliaPy/PyCall.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.