Getting Started#
The conda-lockfiles plugin is integrated directly into the following conda commands:
conda createconda export
The create and export commands allow you to create environments from lockfiles or
save and share them, respectively.
Using conda create to create environments from lockfiles#
# Same committed file on another machine or in CI; conda uses the slice for the current subdir. Autodetect format.
conda create --name my-env --file conda-lock.yml
conda create --name my-env --file dev.conda-lock.yml
conda create --name my-env --file pixi.lock
# If the format is not detected from the filename:
conda create --name my-env --file dev.yml --format conda-lock
# or, equivalently, using the canonical version-pinned name:
conda create --name my-env --file dev.yml --format conda-lock-v1
Tip
conda-lock and pixi resolve to conda-lock-v1 and rattler-lock-v6
today. Use the version-pinned names in committed lockfiles and CI. See
format aliases.
Warning
Only version 6 format of the pixi lock file is supported. Earlier versions may cause errors.
Using conda export to create lockfiles#
Export lockfile from existing environment.
# Single-platform export (current platform and activated environment, default)
conda export --file conda-lock.yml
# Single-platform export with explicit platform
conda export --file conda-lock.yml --platform linux-64
# Multi-platform export
conda export --file pixi.lock --platform linux-64 --platform osx-arm64
# Lockfile can be generated from an environment that isn't activated.
conda export --name my-env --file conda-lock.yml
# Export with custom filename (requires --format)
conda export --file dev-lock.yml --format conda-lock-v1
Special cases:
# Export with explicit format (overrides filename detection)
conda export --file conda-lock.yml --format yaml
# Warning: Filename 'conda-lock.yml' suggests format 'conda-lock-v1' but --format specifies 'yaml'. Using 'yaml' or the environment.yml format.
# Export to stdout (bypasses filename validation)
conda export > output.yml # Uses default format
conda export --format conda-lock-v1 > anything.txt
Using conda export to save lockfiles with a different platform#
If you have created an environment with the following command on the linux-64 platform:
conda create --name python-env --yes python
it’s possible to export it to a lockfile using the win-64 platform with the following command:
conda export --name python-env --format pixi --platform win-64 --file pixi.lock
# or with the version-pinned name:
conda export --name python-env --format rattler-lock-v6 --platform win-64 --file pixi.lock
Warning
Currently, it is not possible to create an environment from a lockfile and then export it using a
different platform. For example, an environment created using a lockfile using the linux-64 platform
cannot be subsequently exported to the win-64 platform.
Example workflows#
Simple export and create:
conda export --file conda-lock.yml # Auto-detects conda-lock-v1
conda create --name prod --file conda-lock.yml # Auto-detects conda-lock-v1
Create lock file to share across platforms:
conda export --file conda-lock.yml --platform linux-64 --platform osx-arm64 --platform --win-64
# Share conda-lock.yml with team
conda create --name sharedenv --file conda-lock.yml
Here is a simple script that uses conda requirements.txt (not a pip requirements.txt) files and changes the Python version to create multi-platform lock files for each Python version.
for py in 3.10 3.11 3.12 3.13 3.14; do
ver="${py//./}"
name="my_env-py${ver}"
lock_file_name="py${ver}.conda-lock.yml"
conda create --yes --name "${name}" --file requirements.txt "python=${py}"
conda export --name "${name}" --file "${lock_file_name}" --format conda-lock-v1 --platform linux-64 --platform win-64 --platform osx-arm64
conda env remove --name "${name}" --yes
done
Tips on usage#
These lockfiles can be saved to your repositories and used in CI workflows for faster execution times
They can also be used with
conda-lockandpixiThis project is still in beta; please file bugs and feature requests here
A Note about conda-lock#
The conda-lock command is a specific command that can be used to create conda-lock.yaml files. It will need to be installed separately. Currently, the only additional functionality it provides is being able to produce a lock file from an environment.yaml file. For more information, see the conda-lock GitHub repo.