using Pkg
ENV["PYTHON"]="/path/to/your/python/executable"
pkg"add PyCall"
pkg"build PyCall"
1.将您的代码放入Julia包
using Pkg
Pkg.generate("MyPackage")
在文件夹src中,您将找到MyPackage.jl,将其编辑为如下所示:
module MyPackage
function main(x,y)
#do very complex staff or place it in your_other_file.jl
2x.+y
end
include("your_other_file.jl")
export main, and_whatever_other_functio_you_defined
end
1.安装pyjulia
python -m pip install julia
(On Linux系统,您可能希望使用python3而不是python命令) 在这一步中,请注意,虽然外部Python可以与Julia一起使用。但是,为了方便起见,可能值得考虑使用与Julia一起安装的Python PyCall。在这种情况下,请使用如下命令进行安装:
%HOMEPATH%\.julia\conda\3\python -m pip install julia
>>> from julia import Pkg
>>> Pkg.activate(".\\MyPackage") #use the correct path
Activating environment at `MyPackage\Project.toml`
>>> from julia import MyPackage
>>> MyPackage.main([1,2],5)
[7,9]
function getAnElement(array,n)
return array[n]
end
在R中运行.jl文件中定义的函数
那么在R中你只需要:
> install.packages("JuliaCall")
> library(JuliaCall)
> julia_setup() # on every new R session !
> julia_source("juliaScript.jl")
> out <- julia_call("getAnElement",c(10,20,30),2)
> out
[1] 20
请注意,R向量已自动转化为Julia阵列。
在Python中运行.jl文件中定义的函数
在Python中,这就更简单了:
$ python3 -m pip install --user julia
>>> import julia
>>> julia.install() # only once, not every session
>>> jl=julia.Julia(compiled_modules=False)
>>> from julia import Main
>>> Main.include("juliaScript.jl")
>>> Main.getAnElement([1,2,3],2)
20
3条答案
按热度按时间6l7fqoea1#
下面是Python、R和一个外部进程(当然是一个可以从任何其他进程运行的可执行命令)的说明。我建议把你的代码放在一个包中,然后用这些语言之一加载它,而不是作为一个外部进程来执行它。
巨蟒
1.使用Python Anaconda(不是内置系统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代码了:
Gnu R
1.将系统变量
PATH
配置为指向Julia位置。因此,当您在控制台中键入julia
时,它应该会启动Julia1.运行以下脚本以安装R-Julia集成
1.按照上述Python说明(仅步骤3)创建名为
MyPackage
的包1.运行代码
Bash(或任何语言)
1.按照Python说明构建包(仅限步骤3)
1.配置系统
PATH
变量1.在包目录中运行命令(注意
string(:.)
是Julian的一个技巧,我使用它来避免bash命令中的撇号转义):这将安装程序包的所有依赖项。要跳过安装,请从上述命令中删除
Pkg.instantiate()
。rnmwe5a22#
@przemyslaw-szufel给出的答案是正确的,但是可能有点过于复杂了,你不一定需要把代码 Package 在一个模块中或者定义一个自定义环境(是的,这是一个很好的实践,但是在当时只是一个步骤......)
首先创建一个包含以下内容的文件
juliaScripts.jl
:在R中运行.jl文件中定义的函数
那么在R中你只需要:
请注意,R向量已自动转化为Julia阵列。
在Python中运行.jl文件中定义的函数
在Python中,这就更简单了:
同样在Python中,数组(原生的Python列表、Numpy数组和其他常用的数据结构)会在Python和Julia之间自动转换。
我不想做广告,但关于连接R <->Julia或Python <->Julia的更多细节,请参见我的Apress(2019)书《Julia Quick Syntax reference》第7章“连接Julia与其他语言”(我不应该说,但你可以很容易地在知名网站上在线找到PDF格式......)
gg58donl3#
使用JuliaConnectoR package:
有关JuliaConnectoR的更多信息,请参见上面的链接以及this paper,其中还将其与替代包进行了比较,如JuliaCall和XRJulia。