Aller au contenu

conda-lock - Verrouillage reproductible d'environnement Conda

conda-lock - Verrouillage reproductible d’environnement Conda

conda-lock résout le problème de reproductibilité de conda. Un environment.yml liste les paquets demandés, donc le résoudre sur deux machines une semaine plus tard peut produire des versions différentes — le classique « ça marche sur ma machine ». conda-lock résout l’environnement une fois et écrit un fichier de verrouillage avec versions exactes, builds, et hashes pour chaque plateforme que vous ciblez, afin que les installations deviennent déterministes et rapides (pas de résolution au moment de l’installation).

Installation

MéthodeCommande
pipx (recommandé)pipx install conda-lock
condaconda install -c conda-forge conda-lock
pippip install conda-lock
Vérifierconda-lock --version

Générer un fichier de verrouillage

# Verrouiller pour plusieurs plateformes à partir d'un environment.yml
conda-lock -f environment.yml -p linux-64 -p osx-arm64 -p win-64
FlagObjectif
-f, --fileSpécification d’entrée (environment.yml, pyproject.toml, meta.yaml)
-p, --platformPlateforme cible (répétable)
-k, --kindGenre de sortie : lock (unifié), explicit, env
--lockfileChemin de sortie (défaut conda-lock.yml)
--check-input-hashPasser la résolution si les entrées inchangées

Genres de fichier de verrouillage

GenreProduitUtiliser
lockconda-lock.yml unifié (toutes les plateformes)Committer ceci à git
explicitFichiers .lock per-plateformeconda create --file
envenvironment.yml renduOutils attendant un fichier env simple
# Rendre les fichiers explicites per-plateforme à partir du verrouillage unifié
conda-lock render -p linux-64

Installer à partir d’un verrouillage

# Créer un environnement exactement comme verrouillé
conda-lock install --name myenv conda-lock.yml

# Ou avec micromamba (rapide)
micromamba create -n myenv -f conda-linux-64.lock
CommandeDescription
conda-lock install -n NAMECréer/mettre à jour l’env à partir d’un verrouillage
conda-lock install --mambaUtiliser mamba comme solveur/installeur
conda create --file X.lockInstaller un verrouillage explicite directement

Mettre à jour les dépendances

# Résoudre tout à nouveau (nouvelles versions autorisées)
conda-lock -f environment.yml -p linux-64 -p osx-arm64

# Mettre à jour un seul paquet, garder le reste épinglé
conda-lock --update numpy -f environment.yml -p linux-64
TâcheCommande
Actualisation complèteRéexécuter conda-lock
Mise à jour ciblée--update PKG
Vérifier les entrées inchangées--check-input-hash

Inclure les dépendances pip

# environment.yml
name: myproject
channels: [conda-forge]
dependencies:
  - python=3.12
  - numpy
  - pip
  - pip:
      - some-pypi-only-package==1.2.3

conda-lock résout à la fois les dépendances conda et pip dans le même fichier de verrouillage, ce qui est important parce que mélanger les deux de manière ad hoc est une source courante d’environnements cassés.

Modèle CI

# Installations CI déterministes et rapides
- run: conda-lock install --name ci conda-lock.yml
- run: conda run -n ci pytest
PratiquePourquoi
Committer conda-lock.ymlLe verrouillage est la source de vérité
Verrouiller toutes les plateformes ciblesDevs sur macOS, CI sur Linux
Régénérer délibérémentLes mises à jour de dépendances deviennent des diffs examinables
Mettre en cache l’envLes verrouillages rendent la mise en cache fiable

conda-lock vs alternatives

Aspectconda-lockenvironment.ymlpixiuv
ReproductiblePins exacts + hashesNonVerrouillage intégréVerrouillage intégré
Écosystème CondaOuiOuiOuiNon (PyPI)
Verrouillage multi-plateformeOuiN/AOuiOui
Meilleur pourVerrouiller les projets conda existantsEnvs simples/ad-hocNouveaux projets basés sur condaProjets Python purs

Pour les nouveaux projets, considérer pixi (verrouillage intégré) ou uv pour Python pur ; conda-lock adapte la reproductibilité aux flux de travail conda existants.

Ressources