pixi
pixi copied to clipboard
pip compile equivalent / trigger solve
Problem description
I'd like to use pixi to give me just the lock file, not install packages, similar to how I can use pip-compile or uv pip compile.
However, pixi seems to generate the lock file only after a pixi add command. However, if I change the manifest file (e.g. generate), I cannot do a pixi compile/solve/lock or pixi install --dry-run to obtain a lockfile.
Maybe I misunderstood how pixi works, but I expect 3 phases:
- add
- solve
- install
pixi seems to run solve and install by default, which is great, and I can skip the install using --no-install, which is also great.
However, I cannot trigger the solve phase independently.
Yeah this is a more often requested feature. I though I would be able to link you to that issue but I guess it is lost in conversations.
Having a pixi lock or something similar would be good indeed
For documentation purposes, there is an requirement for the pypi solve to have a python interpreter available which we install in the conda ([dependencies] table) environment. Thus installing atleast part of the environment is required for the full locking of a pixi project.
For example this would still need to install python to only lock:
[project]
name = "test"
channels = ["conda-forge"]
platforms = ["linux-64"]
[dependencies]
python = ">=3.10"
[pypi-dependencies]
solara = "==1.30.1"
Until there is a solution to this issue https://github.com/prefix-dev/pixi/issues/1130, specifically the wheel only install.
I have a similar use case, and my workaround is running pixi list or pixi tree. These are otherwise diagnostic commands that function like no-ops but still trigger a lockfile check.
The main thing that can be confusing from a UX perspective is that if you haven't installed anything and no lockfile update is needed, then both of those commands succeed without printing anything to console.