1

anacondaディストリビューションのpython 3.7を使用しています。

pyjulia を使用して julia からいくつかの関数を呼び出す際に問題があります。

以下は私のコードの抜粋です:

import julia
from julia import Julia
julia.Julia(runtime=r"C:\Users\Bruno\AppData\Local\Programs\Julia\Julia-1.4.2\bin\julia.exe")
from julia import SpecialFunctions

SpecialFunctions.polygamma(3,2)

パッケージ SpecialFunctons は、複雑な引数を処理できる一般化されたポリガンマ関数を導入します (実引数のみを受け入れる Scipy のポリガンマとは対照的です)。

問題は、ポリガンマ関数を実行すると、次のエラーが発生することです。

julia exception: could not load library "libopenlibm"
The specified module could not be found.
 Stacktrace:
 [1] gamma at C:\Users\Bruno\.julia\packages\SpecialFunctions\LC8dm\src\gamma.jl:573 [inlined]
 [2] polygamma(::Int64, ::Float64) at C:\Users\Bruno\.julia\packages\SpecialFunctions\LC8dm\src\gamma.jl:359
 [3] polygamma(::Int64, ::Int64) at C:\Users\Bruno\.julia\packages\SpecialFunctions\LC8dm\src\gamma.jl:566
 [4] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}) at .\essentials.jl:712
 [5] invokelatest(::Any, ::Any, ::Vararg{Any,N} where N) at .\essentials.jl:711
 [6] _pyjlwrap_call(::Function, ::Ptr{PyCall.PyObject_struct}, ::Ptr{PyCall.PyObject_struct}) at C:\Users\Bruno\.julia\packages\PyCall\zqDXB\src\callback.jl:28
 [7] pyjlwrap_call(::Ptr{PyCall.PyObject_struct}, ::Ptr{PyCall.PyObject_struct}, ::Ptr{PyCall.PyObject_struct}) at C:\Users\Bruno\.julia\packages\PyCall\zqDXB\src\callback.jl:49

これは、python が julia から libopenlibm ライブラリを見つけられないことを意味します。これは、関数 SpecialFunctions.polygamma を実行するためにおそらく必要です。Pythonにこのモジュールを表示させる方法がわかりません。dll libopenlibm.dll.a は、明らかに julia がインストールされているフォルダーにあります。私は、pyjulia を再インストールし、PATH を変更し、julia の他のモジュールを呼び出してみました (これがおそらくテーブルを実現するかどうかを確認するため)。しかし、私は成功しませんでした。

このライブラリを必要としない他の関数 (SpecialFunctions.gamma(x) など) には、この問題はありません。

したがって、問題はおそらく次のとおりです。python がこの特定の julia ライブラリをメモリにロードするようにするにはどうすればよいでしょうか?

任意の助けをいただければ幸いです。

4

0 に答える 0