Skip to main content

JuliaPkg

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Tests Codecov

Do you want to use Julia in your Python script/project/package? No problem! JuliaPkg will help you out!

  • Declare the version of Julia you require in a juliapkg.json file.
  • Add any packages you need too.
  • Call juliapkg.resolve() et voila, your dependencies are there.
  • Use juliapkg.executable() to find the Julia executable and juliapkg.project() to find the project where the packages were installed.
  • Virtual environments? PipEnv? Poetry? Conda? No problem! JuliaPkg will set up a different project for each environment you work in, keeping your dependencies isolated.

Install

pip install juliapkg

Declare dependencies

Functional interface

  • status(target=None) shows the status of dependencies.
  • require_julia(version, target=None) declares that you require the given version of Julia. The version is a Julia compat specifier, so 1.5 matches any 1.*.* version at least 1.5.
  • add(pkg, uuid=None, dev=False, version=None, path=None, subdir=None, url=None, rev=None, preferences=None, target=None) adds a required package.
    • version is a version compat specifier.
    • dev=True installs the package in dev mode.
    • path, subdir, url and rev specify the location of the package.
    • preferences is a dict of package preferences.
  • rm(pkg, target=None) removes a package.

Note that these functions edit juliapkg.json but do not actually install anything until resolve() is called, which happens automatically in executable() and project().

The target specifies the juliapkg.json file to edit, or the directory containing it. If not given, it will be your virtual environment or Conda environment if you are using one, otherwise ~/.pyjuliapkg.json.

juliapkg.json

You can also edit juliapkg.json directly if you like. Here is an example which requires Julia v1.. and the Example package v0.5.*:

{
    "julia": "1",
    "packages": {
        "Example": {
            "uuid": "7876af07-990d-54b4-ab0e-23690620f79a",
            "version": "0.5"
        }
    }
}

Each package may also specify an optional "preferences" object; see add() above.

Command line interface

You can also use the CLI, some examples:

python -m juliapkg --help
python -m juliapkg add Example --version=0.5
python -m juliapkg resolve
python -m juliapkg status
python -m juliapkg run -E 'using Example; Example.hello("world")'
python -m juliapkg remove Example

Using Julia

  • juliapkg.executable() returns a compatible Julia executable.
  • juliapkg.project() returns the project into which the packages have been installed.
  • juliapkg.bindir() returns the Julia binary directory (Sys.BINDIR).
  • juliapkg.libjulia() returns the path to the libjulia library.
  • juliapkg.resolve(force=False, dry_run=False, julia_args=None) ensures all the dependencies are installed. You don't normally need to do this because the other functions resolve automatically.
  • juliapkg.update(dry_run=False) updates the dependencies.

Details

Configuration

JuliaPkg does not generally need configuring, but for advanced usage the following options are available. Options can be specified either as an environment variable or as an -X option to python. The -X option has higher precedence.

Environment Variable -X Option Description
PYTHON_JULIAPKG_EXE=<exe> -X juliapkg-exe=<exe> The Julia executable to use.
PYTHON_JULIAPKG_PROJECT=<project> -X juliapkg-project=<project> The Julia project where packages are installed.
PYTHON_JULIAPKG_OFFLINE=<yes/no> -X juliapkg-offline=<yes/no> Work in Offline Mode - does not install Julia or any packages.

Which Julia gets used?

JuliaPkg tries the following strategies in order to find Julia on your system:

  • If the -X juliapkg-exe argument to python is set, that is used.
  • If the environment variable PYTHON_JULIAPKG_EXE is set, that is used.
  • If julia is in your PATH, and is compatible, that is used.
  • If juliaup is in your PATH, it is used to install a compatible version of Julia.
  • Otherwise, JuliaPkg downloads a compatible version of Julia and installs it into the Julia project.

More strategies may be added in a future release.

Where are Julia packages installed?

JuliaPkg installs packages into a project whose location is determined by trying the following strategies in order:

  • If the -X juliapkg-project argument to python is set, that is used.
  • If the environment variable PYTHON_JULIAPKG_PROJECT is set, that is used.
  • If you are in a Python virtual environment or Conda environment, then {env}/julia_env subdirectory is used.
  • Otherwise ~/.julia/environments/pyjuliapkg is used (respects JULIA_DEPOT).

More strategies may be added in a future release.

If the project is explicitly specified (with -X juliapkg-project or PYTHON_JULIAPKG_PROJECT) then it is considered "shared" and dependencies will only ever be added, not removed.

Adding Julia dependencies to Python packages

JuliaPkg looks for juliapkg.json files in many locations, namely:

  • {project}/pyjuliapkg where project is as above (depending on your environment).
  • Every installed package (looks through sys.path and sys.meta_path).

The last point means that if you put a juliapkg.json file in a package, then install that package, then JuliaPkg will find those dependencies and install them.

You can use add, rm etc. above with target='/path/to/your/package' to modify the dependencies of your package.

Offline mode

If you set the environment variable PYTHON_JULIAPKG_OFFLINE=yes (or call python with the option -X juliapkg-offline=yes) then JuliaPkg will operate in offline mode. This means it will not attempt to download Julia or any packages.

Resolving will fail if Julia is not already installed. It is up to you to install any required Julia packages.

Metadata

Release files for juliapkg 0.1.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for juliapkg 0.1.27
File Size Uploaded
juliapkg-0.1.27.tar.gz 26.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for juliapkg 0.1.27
File Interpreter ABI Platform
juliapkg-0.1.27-py3-none-any.whl Python 3 none any Details

Total release size: 49.1 kB

Release files / juliapkg-0.1.27.tar.gz

Download URL juliapkg-0.1.27.tar.gz
Size 26.0 kB
Tags Source
SHA-256 checksum
How to use checksums
89cbdc56030f3de82c26bc84e2c0e99740675b6c14a746585522b84f52c47e08
BLAKE2b-256 checksum
How to use checksums
10cbe1bdfe4e8ad365532f560a39c87a70a9ef40464d82226bbc022654d54243
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / juliapkg-0.1.27-py3-none-any.whl

Download URL juliapkg-0.1.27-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c2f6c53a65a4f4a1c124db8400ad48c9f142b2def67b2db86703f0cedc42c150
BLAKE2b-256 checksum
How to use checksums
3efc019ecccb5ed710aa38ae4173facf0bb411d855d2d137ad29ec31c16342da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.27 This release

2 release files

0.1.26

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page