我找到了一个Julia函数,它很好地完成了我需要的工作。我如何快速集成它,以便能够从Python中调用它?假设函数为
f(x,y) = 2x.+y
在Python中使用它的最佳和最优雅的方式是什么?
cyvaqqii1#
假设你的Python和Julia已经安装,你需要采取以下步骤。1.运行Julia并安装PyCall
PyCall
using Pkg pkg"add PyCall"
1.将您的代码放入Julia包
using Pkg Pkg.generate("MyPackage")
在文件夹src中,您将找到MyPackage.jl,将其编辑为如下所示:
src
MyPackage.jl
module MyPackage f(x,y) = 2x.+y export f end
1.安装pyjulia
python -m pip install julia
(On Linux系统,您可能希望使用python3而不是python命令)在这一步中,请注意,虽然外部Python可以与Julia一起使用。但是,为了方便起见,可能值得考虑使用与Julia一起安装的Python PyCall。在这种情况下,请使用如下命令进行安装:
python3
python
%HOMEPATH%\.julia\conda\3\python -m pip install julia
或在Linux上
~/.julia/conda/3/python -m pip install julia
请注意,如果定义了JULIA_DEPOT_PATH变量,则可以用其值替换%HOMEPATH%\.julia或~/.julia/。1.运行适当的Python并告诉它配置Python-Julia集成:
JULIA_DEPOT_PATH
%HOMEPATH%\.julia
~/.julia/
import julia julia.install()
1.现在,您可以调用Julia代码了:
>>> from julia import Pkg >>> Pkg.activate(".\\MyPackage") #use the correct path Activating environment at `MyPackage\Project.toml` >>> from julia import MyPackage >>> MyPackage.f([1,2],5) [7,9]
值得注意的是,这个答案中提出的方法与独立Julia文件相比有几个优点,尽管不太推荐,但这是可能的。1.包被预编译(因此在后续运行中速度更快),并且可以作为Python中的一个包加载。1.包通过1Project.toml '自带了自己的虚拟环境,这使得生产部署更加方便。
在2022年2月juliacall是announced,截至2022年12月juliacall可能是一个更容易的选择对一些用户-看看:How to load a custom Julia package in Python using Python's juliacall
juliacall
1条答案
按热度按时间cyvaqqii1#
假设你的Python和Julia已经安装,你需要采取以下步骤。
1.运行Julia并安装
PyCall
1.将您的代码放入Julia包
在文件夹
src
中,您将找到MyPackage.jl
,将其编辑为如下所示:1.安装pyjulia
(On Linux系统,您可能希望使用
python3
而不是python
命令)在这一步中,请注意,虽然外部Python可以与Julia一起使用。但是,为了方便起见,可能值得考虑使用与Julia一起安装的Python
PyCall
。在这种情况下,请使用如下命令进行安装:或在Linux上
请注意,如果定义了
JULIA_DEPOT_PATH
变量,则可以用其值替换%HOMEPATH%\.julia
或~/.julia/
。1.运行适当的Python并告诉它配置Python-Julia集成:
1.现在,您可以调用Julia代码了:
值得注意的是,这个答案中提出的方法与独立Julia文件相比有几个优点,尽管不太推荐,但这是可能的。
1.包被预编译(因此在后续运行中速度更快),并且可以作为Python中的一个包加载。
1.包通过1Project.toml '自带了自己的虚拟环境,这使得生产部署更加方便。
编辑
在2022年2月
juliacall
是announced,截至2022年12月juliacall
可能是一个更容易的选择对一些用户-看看:How to load a custom Julia package in Python using Python's juliacall