Assuming your Python and Julia are installed you need to take the following steps.
-
Run Julia and install
PyCall
using Pkg pkg"add 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 f(x,y) = 2x.+y export f 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 asPyCall
.
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.f([1,2],5) [7,9]
It is worth noting that the proposed approach in this answer has several advantages over a standalone Julia file which would be possible, although is less recommended. The advantages include:
- Packages get precompiled (so they are faster in subsequent runs) and can be loaded as a package in Python.
- Packages come with their own virtual environment via 1Project.toml` which makes production deployments much comfortable.
- A Julia package can be statically compiled into Julia’s system image which can slash itsloading time — see https://github.com/JuliaLang/PackageCompiler.jl .
EDIT
In February 2022 juliacall
was announced, as of December 2022 juliacall
might be an easier option for some users – have a look at: How to load a custom Julia package in Python using Python’s juliacall