What’s a smooth workflow to achieve exact reproducibility in a mixed Julia/Python project (not library), with either Julia or Python as the host language? I’d like to specify, i.e. lock, the versions of all the following: (1) Julia (2) Julia packages (3) Python interpreter (4) Python packages.
Author of PythonCall.jl/pyjuliacall here. There’s no locking mechanism directly supported yet.
However if you are using Julia with PythonCall.jl, you could explicitly save off the pixi.lock
file that is written by CondaPkg.jl (assuming you’re using the default Pixi backend), and write a little script to:
- Do
CondaPkg.resolve()
to resolve once (with probably the wrong versions of packages). - Copy the lock file into the right place.
- Call
pixi install --locked
to install the correct versions of packages.
If you instead use Python with pyjuliacall, you could do a similar thing to save off and restore Julia’s Manifest.toml
file.
It would be nice to have this built-in but it’s not there yet.
1 Like
Or if you want super-duper-reproducibility then you can always wrap everything up into a Docker image.
1 Like