Error when importing Python modules in Package namespace
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 38/100
Direção de pesquisa
Comece com o exemplo MyPkg.jl, o uso de pyimport do PyCall e o stack trace em PyCall.jl:299-318. Reproduza a diferença entre MyPkg.my_code, MyPkg.my_code2 e include("/MyPkg.jl") em um notebook Jupyter e, em seguida, investigue o comportamento de pré-compilação relatado. Considera-se concluído quando o import em nível de pacote funciona ao carregar o pacote instalado, com um teste de regressão cobrindo o caso que falha.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Julia
- Estrelas
- 1.5k
- Forks
- 186
- Merge médio
- 7d 10h
- PRs com merge (30d)
- 2
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de JuliaPy/PyCall.jl
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 20/100
Todas as issues de JuliaPy/PyCall.jl
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
backport 1.14 GC
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
`binary_focal_loss` throws a `DomainError` when a negative sample has `ŷ = 1`Talvez já em andamento @parth-patel010 assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
FluxML/Flux.jl#2818 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
JuliaDiff/TaylorSeries.jl#445 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
control-toolbox/CTActions#139 · 1 comentário ·
Mantenedores costumam responder em até 1 dia