如何使用Python的juliacall在Python中加载自定义Julia包

nlejzf6q  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(156)

我已经知道了。
但是,现在我已经使用以下命令创建了自己的简单Julia包:using Pkg;Pkg.generate("MyPack");Pkg.activate("MyPack");Pkg.add("StatsBase"),其中文件MyPack/src/MyPack.jl具有以下内容:

module MyPack
using StatsBase

function f1(x, y)
   return 3x + y
end
g(x) = StatsBase.std(x)

export f1

end

现在我想通过juliacall在Python中加载这个Julia包并调用f1g函数,我已经从命令行运行了pip3 install juliacall,如何从Python中调用上述函数?

syqv5f0l

syqv5f0l1#

您需要运行以下代码以通过juliacall从Python加载MyPack

from juliacall import Main as jl
from juliacall import Pkg as jlPkg

jlPkg.activate("MyPack")  # relative path to the folder where `MyPack/Project.toml` should be used here 

jl.seval("using MyPack")

现在可以使用函数了(注意,调用非导出函数需要包名):

>>> jl.f1(4,7)
19

>>> jl.f1([4,5,6],[7,8,9]).to_numpy()
array([19, 23, 27], dtype=object)

>>> jl.MyPack.g(numpy.arange(0,3))
1.0

注意,从Python调用Julia的另一个选项,到目前为止似乎更难配置,是pip install julia包,这里描述了它:I have a high-performant function written in Julia, how can I use it from Python?

相关问题