在python中调用julia函数时查找库libopenlibm时出错

2024-10-03 13:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是来自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包引入了可以处理复杂参数的广义polygamma函数(与Scipy中的polygamma相反,它只接受实参数)

问题是,当我运行polygamma函数时,我遇到了以下错误:

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,修改路径,并调用julia的其他模块(看看这是否可能实现一个表)。然而,我没有成功

其他不需要此库的函数(例如SpecialFunctions.gamma(x))没有此问题

所以,问题可能是:我如何使python将这个特定的julia库加载到内存中

任何帮助都将不胜感激


Tags: 函数srcpackagesanyusersatpyobjectgamma