juliacall
Julia and Python in seamless harmony
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 juliacalluv
uv add juliacallpoetry
poetry add juliacallInstalling 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
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
tree-sitter-juliaProvides incremental parsing of Julia source…
permissive · top 5,000 on PyPI
py4jPy4J enables Python programs to dynamically…
permissive · top 1,000 on PyPI
juliapkgManages Julia language installation and package…
permissive · top 15,000 on PyPI
find-libpythonLocates the libpython dynamic library path for…
permissive · top 5,000 on PyPI
dataframe-api-compatProvides a lightweight compatibility layer that…
permissive · top 15,000 on PyPI
pyobjcPyObjC bridges Python and Objective-C, enabling…
permissive · top 15,000 on PyPI
eightEight provides a compatibility layer that lets…
permissive · top 15,000 on PyPI
pyobjc-corePyObjC-core provides the foundational bridge…
permissive · top 5,000 on PyPI
multipledispatchEnables functions to dispatch on the types of…
permissive · top 5,000 on PyPI
gspread-dataframeConverts between Google Sheets worksheets and…
permissive · top 5,000 on PyPI