結論:パスを追加しましょう
PyCall
で自作パッケージを import
するとき、実行場所のパスをPythonのパスに自動で追加してくれないらしいです。なので、事前にJuliaのパッケージなり、実行するJuliaファイルなりのパスをPythonのパスに追加すれば問題は解決します。
ただ、実行箇所によってパスが変わるといけないので、@__DIR__
を使っておくのが一番良いかと思います。
下記がおそらく最小構成です。
MyJuliaMod.jl
module MyJuliaMod
using PyCall
const mypymodule = PyNULL() # https://github.com/JuliaPy/PyCall.jl?tab=readme-ov-file#using-pycall-from-julia-modules
function __init__()
pushfirst!(pyimport("sys")."path", @__DIR__) # これが大事!!
copy!(mypymodule, pyimport("your_python_module"))
end
export mypymodule # モジュール名なしで呼び出しを行うのに必要
end
your_python_module.py
def greed():
print("hello.")
参考にした記事