Zum Inhalt springen

conda-lock - Reproducible Conda Environment Locking Cheatsheet

conda-lock - Reproducible Conda Environment Locking Cheatsheet

conda-lock löst Conda’s Reproduzierbarkeit-Problem. Ein environment.yml listet angefordert Packages auf, sodass das Solving davon auf zwei Maschinen eine Woche auseinander unterschiedliche Versionen erzeugen kann — der Klassische “Works auf meiner Maschine.” conda-lock löst die Environment einmal auf und schreibt eine Lock-Datei mit Exakten Versionen, Builds und Hashes für jede Platform, die du targetest, sodass Installs Deterministisch und Schnell werden (kein Solving bei Install-Zeit).

Installation

MethodeBefehl
Pipx (Empfohlen)pipx install conda-lock
Condaconda install -c conda-forge conda-lock
Pippip install conda-lock
Verifikationconda-lock --version

Generating eine Lock-Datei

# Lock für Multiple Platforms von einem environment.yml
conda-lock -f environment.yml -p linux-64 -p osx-arm64 -p win-64
FlagZweck
-f, --fileInput Spec (environment.yml, pyproject.toml, meta.yaml)
-p, --platformTarget Platform (Wiederholbar)
-k, --kindOutput Kind: lock (Unified), explicit, env
--lockfileOutput Path (Standard conda-lock.yml)
--check-input-hashSkip Re-Solving wenn Inputs Unchanged

Lock-Datei Kinds

KindProducesNutze
lockUnified conda-lock.yml (alle Platforms)Commit das zu Git
explicitPer-Platform .lock Dateienconda create --file
envRendered environment.ymlTools, die ein Plain Env File erwarten
# Render Per-Platform Explizite Dateien aus der Unified Lock
conda-lock render -p linux-64

Installieren aus einer Lock

# Erstelle eine Environment genau wie gelock
conda-lock install --name myenv conda-lock.yml

# Oder mit Micromamba (Schnell)
micromamba create -n myenv -f conda-linux-64.lock
BefehlBeschreibung
conda-lock install -n NAMECreate/Update die Env aus einer Lock
conda-lock install --mambaNutze Mamba als die Solver/Installer
conda create --file X.lockInstalliere eine Explizite Lock direkt

Updating Dependencies

# Re-Solve Alles (Neue Versionen erlaubt)
conda-lock -f environment.yml -p linux-64 -p osx-arm64

# Update Nur ein Package, keep der Rest Pinned
conda-lock --update numpy -f environment.yml -p linux-64
TaskBefehl
Full RefreshRe-Run conda-lock
Targeted Bump--update PKG
Verify Inputs Unchanged--check-input-hash

Including Pip Dependencies

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

Conda-Lock löst beide Conda und Pip Dependencies in die selbe Lock-Datei, welche wichtig ist, weil das Mixing der zwei ad hoc eine Common Source von Gebrochenen Environments ist.

CI Pattern

# Deterministic, Fast CI Installs
- run: conda-lock install --name ci conda-lock.yml
- run: conda run -n ci pytest
PraxisWarum
Commit conda-lock.ymlDie Lock ist die Source of Truth
Lock alle Target PlatformsDevs auf macOS, CI auf Linux
Regenerate DeliberatelyDependency Updates werden Review-able Diffs
Cache die EnvLocks machen Caching Reliable

conda-lock vs Alternativen

AspektConda-LockEnvironment.ymlPixiUv
ReproducibleExact Pins + HashesNeinBuilt-in LockBuilt-in Lock
Conda EcosystemJaJaJaNein (PyPI)
Multi-Platform LockJaN/AJaJa
Am besten fürLocking Existierender Conda ProjekteSimple/Ad-hoc EnvsNeue Conda-based ProjektePure-Python Projekte

Für Neue Projekte consider Pixi (Locking Built-in) oder Uv für Pure-Python; conda-lock Retrofits Reproducibility zu Existierenden Conda Workflows.

Ressourcen