Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Error when importing Python modules in Package namespace

オープン
#1,008 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
julia, python
領域
backend

調査の方向性

MyPkg.jl の例、PyCall の pyimport の使用方法、そして PyCall.jl:299-318 のスタックトレースから始めます。Jupyter notebook で MyPkg.my_code、MyPkg.my_code2、include("/MyPkg.jl") の違いを再現し、その後、報告されているプリコンパイルの挙動を調査します。インストール済みパッケージをロードしたときにパッケージレベルの import が機能し、失敗するケースをカバーする回帰テストがあれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
Julia
スター
1.5k
フォーク
186
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

JuliaPy/PyCall.jl のほかの issue

JuliaPy/PyCall.jl の issue をすべて見る

似ている issue

Julia の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。