Error when importing Python modules in Package namespace
- Lingua principale
- Julia
- Stelle
- 1.5k
- Fork
- 186
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
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`:
```julia
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:
```julia
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:
```julia
using MyPkg
MyPkg.my_code2([1., 2.])
```
This also works:
```julia
include("/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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.