首页 > 解决方案 > 我在哪里保存我想在 Julia 中调用的 python 文件?

问题描述

我有一个计算数组的 python 脚本,我想在 Julia 中使用这个数组。

最简单的方法是什么?

标签: pythonjulia

解决方案


如果你有一个又长又复杂的 python 脚本,并且你想直接从 Julia 调用它并将结果数组直接返回给 Julia,最简单的选择可能是将你的 Python 脚本包装到一个 Python 模块中,将该模块安装在你的任何位置Python 路径,并使用PyCall将其导入 Julia ,使用以下内容:

using PyCall
my_python_package = pyimport("my_python_package")
foo = my_python_package.my_python_function(some_arguments)

如果您的脚本不是那么长和复杂,那么直接从 Julia 调用底层 Python 模块可能会更快,例如:

julia> using PyCall
julia> np = pyimport("numpy")
PyObject <module 'numpy' from '/Users/.../python3.7/site-packages/numpy/__init__.py'>

julia> np.random.normal(0,1,1000)
1000-element Array{Float64,1}:
 -0.05105327176117878
  0.5173117443548936
  1.2998060543454042
  ⋮
 -0.022888531778737377
 -0.6389562444313613
  0.6727725474307601

另请注意,您可以指定使用哪个 Python PyCall

julia> ENV["PYTHON"] = "/path/to/my/python/executable"
julia> Pkg.build("PyCall")

并且可以运行来自 Julia 的任意 Python 代码片段

julia> pyeval("1+1") # 1+1, but in python
2
julia> py"1+1" # this does the same thing
2
julia> py"""
   some longer python snippet including characters
   like newlines or \
   that I don't want to have to have to escape
   """ # also an option

推荐阅读