prefix-dev / pixi

Package management made easy
https://pixi.sh
BSD 3-Clause "New" or "Revised" License
3.22k stars 176 forks source link

pip compile equivalent / trigger solve #1131

Open maartenbreddels opened 6 months ago

maartenbreddels commented 6 months ago

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:

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.

ruben-arts commented 6 months ago

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.

olivier-lacroix commented 6 months ago

Having a pixi lock or something similar would be good indeed

ruben-arts commented 6 months ago

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.

jayqi commented 3 months ago

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.