skillfed

juliacall

Julia and Python in seamless harmony

juliacall v0.9.35 199.4K downloads/30d#9,708 on PyPI
Permissive license Active released

What it is and what it does

JuliaCall is a Python module that enables calling Julia code directly from Python, complementing PythonCall which does the reverse. It provides a symmetric interface so that Python code looks like Python and Julia code looks like Julia, with automatic conversions between the two languages' types and data structures.

The package handles numeric array conversion without copying—you can modify Python arrays like numpy.ndarray from Julia or Julia arrays from Python, with changes reflected in the original objects. It wraps Python sequences, dictionaries, dataframes, and IO streams as their Julia equivalents, and vice versa. It requires Julia 1.10 or later and Python 3.10 or later, and manages Python dependencies per Julia project using a separate Conda environment.

Use it for:

  • Train machine learning models in Julia (e.g. Flux) using data prepared in Python (NumPy) and visualize results with Matplotlib.
  • Perform numerical computations in Julia while keeping data processing and visualization workflows in Python.
  • Access Julia's scientific libraries (statistics, optimization, differential equations) from a Python notebook without rewriting code.
  • Share mutable arrays between Julia and Python for in-place modifications without copying overhead.
  • Combine Julia's performance for compute-heavy tasks with Python's ecosystem for data manipulation and plotting.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Call Julia code from Python and Python code from Julia with automatic type conversion, array wrapping, and a symmetric interface between the two languages.

Yes, if you need to call Julia from Python. The package is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive MIT license. It is well-suited for workflows that leverage Julia's computational strengths while staying in a Python environment. Not necessary if you work exclusively in one language.

Install

juliacall on PyPI

pip

pip install juliacall

uv

uv add juliacall

poetry

poetry add juliacall

Installing juliacall

Before you install

Low friction: pure Python wheel with a single runtime dependency (juliapkg). Actively maintained with recent releases.

License in practice

MIT license permits commercial and private use with minimal restrictions.

Quickstart

pip install juliacall

from juliacall import Main as jl

# Call Julia code from Python
result = jl.sqrt(2.0)

Requires Julia 1.10 or later and Python 3.10 or later to be installed on the system.

Verify before relying

  • Whether the package handles all edge cases in bidirectional array conversion without data loss or unexpected behavior.
  • Performance characteristics of non-copying array conversions in practice for large datasets.
  • Stability and completeness of the symmetric interface across different Julia and Python versions.

Package facts

License not declared (permissive)
Python support supports the current Python release (<4,>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 1 — juliapkg
Maintenance actively maintained — 67 days since the last release
First released
Downloads 199,356/month — #9,708 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: juliacall-0.9.35-py3-none-any.whl

License :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: Python :: 3

Tags

call julia from pythonpython julia interopjulia python bridgecross-language function callsjulia numpy integrationpython julia data exchange
language-interopscientific-computing

More Scientific/Engineering packages