-
Notifications
You must be signed in to change notification settings - Fork 314
feat: install an environment of a lockfile to a target dir #3953
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Hey @gzm55, thanks for your contribution! This is a pretty big feature. |
@Hofer-Julian not yet, but i left a similar discussion last week. it seems not too hard to implement, all the needed low-level functions are ready. |
Responded to your discussion |
@ruben-arts @baszalmstra is there some time to talk about this feature? |
1e68399
to
4442a15
Compare
Sorry for the late response, we're currently working on lots of different features and other work. We currently don't guarantee fully standalone lockfiles, for example authentication and stuff like that is not embedded. What is the vision for this feature, did you think about other options for the implementation? What is the precise use-case you want to solve, as in what do you as a user need? As is I would not feel comfortable to add such a new big feature. |
@ruben-arts Thanks for your response, also for your wonderful tools. We need quickly clone a runtime prefix in different machines, or share the prefix with different developers. The environments are sometimes composed of conda&pypi packages with complicated special version specs. To quickly distribute the environments reproducibly and precisely, we have some options now: Text spec formats
Binary archive formats:
The text formats (environment.yaml) are can be exchanged quickly, and often used in developing process, but sometimes may introduce minor difference. Then we looked at the rattler lock file format, which is a candidate of the standardize conda lock format. It supports both packages, reproducible and take the use of conda/uv architeche. And all the unpack/authentication functions already works in pixi.
We can use
This pr can be treated as a PoC, we can still continue discuss in another formal issue and split it into small features. |
This feature makes pixi to install an environment without a workspace and global/exec specs. This can help distribute and setup many complex and reproducible environments fast based on the
pixi
/conda
/uv
caches.The new command
pixi deploy
reads the all the required information for installing a single environment from a specified.lock
file and global/cli configs, and do not try to search a workspace manifest. Another required option is the target prefix folder to install to. The install steps are similar topixi install
command, except that the.lock
file will not be updated to the manifest. The conda and pypi packages are both updated to the prefix folder, except some limit on the source packages.Another new subcommand
pixi workspace export split-lockfile
splits thepixi.lock
of the current workspace into a specified base folder. The packages of each environment and platform are written into<target>/{platform}/{environment}.lock
.