pixi-to-conda-lock is a Python utility designed to bridge the gap between the lightning-fast pixi lock
and the traditionally slow generation of conda-lock
files.
By converting your fast-generated pixi.lock
file into a fully functional conda-lock.yml
, you can enjoy rapid lock file creation without sacrificing the reproducibility of your conda environments. 🚀
[ToC] 📚
- Speed Boost: Generate a
conda-lock.yml
file quickly by leveraging the performance ofpixi lock
. - Accurate Conversion: Uses repodata to extract detailed package metadata from your
pixi.lock
file. - Multi-Environment Support: Convert all environments in your pixi.lock file or select specific ones.
- Multi-Manager Support: Handles both conda and PyPI packages, ensuring comprehensive environment reproduction.
- Fully Tested: Comprehensive tests ensure robust and reliable behavior.
- Typed & Readable: Written in Python with full type annotations for clarity and maintainability.
Transform your fast-generated pixi.lock
file into reproducible conda lock files with a single command:
pixi-to-conda-lock --help
This will display the help message:
usage: pixi-to-conda-lock [-h] [--output OUTPUT] [--environment ENVIRONMENT]
[--verbose]
pixi_lock
Convert pixi.lock to conda-lock.yml
positional arguments:
pixi_lock Path to pixi.lock file
options:
-h, --help show this help message and exit
--output, -o OUTPUT Output directory for conda-lock files (default:
current directory)
--environment, -e ENVIRONMENT
Specific environment to convert (default: convert all
environments)
--verbose, -v Enable verbose logging
Install pixi-to-conda-lock via PyPI:
pip install pixi-to-conda-lock
Or clone the repository and install locally:
git clone https://github.com/basnijholt/pixi-to-conda-lock.git
cd pixi-to-conda-lock
pip install .
Convert all environments in your pixi.lock
file to conda-lock files:
pixi-to-conda-lock /path/to/pixi.lock
This will generate:
conda-lock.yml
for the default environment<env_name>.conda-lock.yml
for each additional environment
Convert only a specific environment from your pixi.lock file:
pixi-to-conda-lock /path/to/pixi.lock --environment dev
This will generate only dev.conda-lock.yml
(or conda-lock.yml
if the environment is "default").
Save the generated conda-lock files to a specific directory:
pixi-to-conda-lock /path/to/pixi.lock --output /path/to/output/dir
To see detailed logs during the conversion process:
pixi-to-conda-lock /path/to/pixi.lock --verbose
- Fast pixi.lock Parsing: Reads the fast-generated
pixi.lock
file, which is created quickly compared to generating a conda lock file directly. - Environment Detection: Identifies all environments defined in the pixi.lock file or processes only the specified environment.
- Repodata Loading: Retrieves detailed package metadata from repodata files (either automatically discovered or from a user-specified directory).
- Package Processing: Processes both conda and PyPI packages for each environment. For conda packages, if repodata information isn't available, the tool falls back on URL parsing.
- Generating conda-lock.yml: Combines the gathered information to generate fully reproducible conda-lock files that mirror your original environments.
This approach ensures you get the speed benefits of pixi lock
without compromising on the quality and reproducibility of your conda environments.
Contributions, bug reports, and feature suggestions are welcome! Please open an issue or submit a pull request on the GitHub repository.
Happy converting! 🔄🔒