问题
I am new to Julia. I developed a few lines of code to get the results I needed from packages I was not able to find in Python or R. Now, I am trying to get this file to be easily accessible, and wrap the code in Python or R. Has anyone done this before? I have tried a few methods and have not found anything that has helped.
The most simple way to do this would be just a few lines of code that calls the .jl file, runs it (which the code is then added to a .txt file from julia), and then alerts you when the code is done.
Any help would be greatly appreciated. R is the preferable method and at this point Python would be appreciated as well.
回答1:
Please find below instructions for Python, R and just an external process (which of course is an executable command that can be run from any other process). I recommend putting your code in a package and loading it in one of those languages rather than executing this as an external process.
Python
Use Python Anaconda (not in-built system Python) and install Julia
Run Julia and install
PyCall
using Pkg ENV["PYTHON"]="/path/to/your/python/executable" pkg"add PyCall" pkg"build PyCall"
Put your code into a Julia package
using Pkg Pkg.generate("MyPackage")
In the folder
src
you will findMyPackage.jl
, edit it to look like this: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
Install pyjulia
python -m pip install julia
(On Linux systems you might want to use
python3
instead ofpython
command)For this step note that while an external Python can be used with Julia. However, for a convenience it might be worth to consider using a Python that got installed together with Julia as
PyCall
. In that case for installation use a command such this one:%HOMEPATH%\.julia\conda\3\python -m pip install julia
or on Linux
~/.julia/conda/3/python -m pip install julia
Note that if you have
JULIA_DEPOT_PATH
variable defined you can replace%HOMEPATH%\.julia
or~/.julia/
with its value.Run the appropiate Python and tell it to configure the Python-Julia integration:
import julia julia.install()
Now you are ready to call your Julia code:
>>> 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]
Gnu R
Configure your system
PATH
variable to point to your Julia location. Hence when you typejulia
in the console it should start JuliaRun the script below to install R-Julia integration
install.packages("JuliaCall")
library(JuliaCall)
julia <- julia_setup()
Follow the above instructions for Python (step 3 only) and create the package named
MyPackage
Run the code
library(JuliaCall)
julia_eval("using Pkg;Pkg.activate(\"C:/temp/rrr/MyPackage\")")
julia_library("MyPackage")
julia_eval("MyPackage.main(3,5)")
Bash (or just any language)
Build the package following instructions for Python (step 3 only)
Configure the system
PATH
variableBeing in the package directory run the command (note
string(:.)
is a Julian trick that I use to avoid apostrophe escaping in bash commands):
julia -e "using Pkg;Pkg.activate(string(:.));Pkg.instantiate();using MyPackage;MyPackage.main(3,4)"
This will install all dependencies for your package. In order to skip the installation remove Pkg.instantiate()
from the above command.
来源:https://stackoverflow.com/questions/65077761/running-jl-file-from-r-or-python