Running .jl file from R or Python

若如初见. 提交于 2021-01-21 10:52:10

问题


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

  1. Use Python Anaconda (not in-built system Python) and install Julia

  2. Run Julia and install PyCall

    using Pkg
    ENV["PYTHON"]="/path/to/your/python/executable"
    pkg"add PyCall"
    pkg"build PyCall"
    
  3. Put your code into a Julia package

    using Pkg
    Pkg.generate("MyPackage")
    

    In the folder src you will find MyPackage.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
    
  4. Install pyjulia

    python -m pip install julia
    

    (On Linux systems you might want to use python3 instead of python 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.

  5. Run the appropiate Python and tell it to configure the Python-Julia integration:

    import julia
    julia.install()
    
  6. 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

  1. Configure your system PATH variable to point to your Julia location. Hence when you type julia in the console it should start Julia

  2. Run the script below to install R-Julia integration

install.packages("JuliaCall")

library(JuliaCall)
julia <- julia_setup()
  1. Follow the above instructions for Python (step 3 only) and create the package named MyPackage

  2. 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)

  1. Build the package following instructions for Python (step 3 only)

  2. Configure the system PATH variable

  3. Being 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!