JuliaPy / JuliaPy/PyCall.jl

Error when importing Python modules in Package namespace

Aperta
#1,008 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.