I have a found a Julia function that nicely does the job I need. How can I quickly integrate it to be able to call it from Python?
Suppose the function is
f(x,y) = 2x.+y
What is the best and most elegent way to use it from Python?
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 find MyPackage.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 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.
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:
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