我有一个用 Julia 编写的高性能函数,如何在 Python 中使用它?
I have a high-performant function written in Julia, how can I use it from Python?
我找到了一个 Julia 函数,它可以很好地完成我需要的工作。
我怎样才能快速集成它以便能够从 Python 调用它?
假设函数是
f(x,y) = 2x.+y
从 Python 开始使用它的最佳和最优雅的方法是什么?
假设您的 Python 和 Julia 已安装,您需要执行以下步骤。
运行 Julia 并安装 PyCall
using Pkg
pkg"add PyCall"
将您的代码放入 Julia 包中
using Pkg
Pkg.generate("MyPackage")
在文件夹 src
中,您会找到 MyPackage.jl
,将其编辑为如下所示:
module MyPackage
f(x,y) = 2x.+y
export f
end
安装 pyjulia
python -m pip install julia
(在 Linux 系统上,您可能希望使用 python3
而不是 python
命令)
对于此步骤,请注意虽然外部 Python 可以与 Julia 一起使用。但是,为了方便起见,这可能是值得的
考虑使用与 Julia 一起安装的 Python 作为 PyCall
。
在那种情况下,安装使用这样的命令:
%HOMEPATH%\.julia\conda\python -m pip install julia
或 Linux
~/.julia/conda/3/python -m pip install julia
请注意,如果您定义了 JULIA_DEPOT_PATH
变量,您可以用它的值替换 %HOMEPATH%\.julia
或 ~/.julia/
。
运行 适当的 Python 并告诉它配置 Python-Julia 集成:
import julia
julia.install()
现在您可以调用您的 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 文件相比,此答案中提出的方法有几个优点,虽然不那么推荐,但这是可能的。优势包括:
- 包被预编译(因此它们在后续运行中更快)并且可以作为包加载到 Python。
- 软件包通过 1Project.toml` 带有自己的虚拟环境,这使得生产部署更加舒适。
- Julia 包可以静态编译到 Julia 的系统映像中,这样可以缩短其加载时间 --- 请参阅 https://github.com/JuliaLang/PackageCompiler.jl。
我找到了一个 Julia 函数,它可以很好地完成我需要的工作。 我怎样才能快速集成它以便能够从 Python 调用它?
假设函数是
f(x,y) = 2x.+y
从 Python 开始使用它的最佳和最优雅的方法是什么?
假设您的 Python 和 Julia 已安装,您需要执行以下步骤。
运行 Julia 并安装
PyCall
using Pkg pkg"add PyCall"
将您的代码放入 Julia 包中
using Pkg Pkg.generate("MyPackage")
在文件夹
src
中,您会找到MyPackage.jl
,将其编辑为如下所示:module MyPackage f(x,y) = 2x.+y export f end
安装 pyjulia
python -m pip install julia
(在 Linux 系统上,您可能希望使用
python3
而不是python
命令)对于此步骤,请注意虽然外部 Python 可以与 Julia 一起使用。但是,为了方便起见,这可能是值得的 考虑使用与 Julia 一起安装的 Python 作为
PyCall
。 在那种情况下,安装使用这样的命令:%HOMEPATH%\.julia\conda\python -m pip install julia
或 Linux
~/.julia/conda/3/python -m pip install julia
请注意,如果您定义了
JULIA_DEPOT_PATH
变量,您可以用它的值替换%HOMEPATH%\.julia
或~/.julia/
。运行 适当的 Python 并告诉它配置 Python-Julia 集成:
import julia julia.install()
现在您可以调用您的 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 文件相比,此答案中提出的方法有几个优点,虽然不那么推荐,但这是可能的。优势包括:
- 包被预编译(因此它们在后续运行中更快)并且可以作为包加载到 Python。
- 软件包通过 1Project.toml` 带有自己的虚拟环境,这使得生产部署更加舒适。
- Julia 包可以静态编译到 Julia 的系统映像中,这样可以缩短其加载时间 --- 请参阅 https://github.com/JuliaLang/PackageCompiler.jl。