コンテンツにスキップ

conda-lock - 再現可能な Conda 環境ロック チートシート

conda-lock - 再現可能な Conda 環境ロック チートシート

conda-lock は conda の再現可能性の問題を解決します。environment.ymlリクエストされたパッケージをリストし、2 つのマシンで 1 週間離れて解決すると異なるバージョンを生成する可能性があります — 古典的な「マシンで機能」。conda-lock は環境を 1 度解決し、ターゲットするすべてのプラットフォーム用の正確なバージョン、ビルド、ハッシュを持つロックファイルを書き込みます。インストールが決定論的で高速になります (インストール時の解決なし)。

インストール

方法コマンド
pipx (推奨)pipx install conda-lock
condaconda install -c conda-forge conda-lock
pippip install conda-lock
確認conda-lock --version

ロックファイル生成

# environment.yml から複数プラットフォーム用ロック
conda-lock -f environment.yml -p linux-64 -p osx-arm64 -p win-64
フラグ目的
-f, --file入力仕様 (environment.ymlpyproject.tomlmeta.yaml)
-p, --platformターゲットプラットフォーム (繰り返し可能)
-k, --kind出力種類: lock (統一)、explicitenv
--lockfile出力パス (デフォルト conda-lock.yml)
--check-input-hash入力が変わっていなければ再解決スキップ

ロックファイル種類

種類生成使用
lock統一 conda-lock.yml (すべてのプラットフォーム)git にコミット
explicitプラットフォーム別 .lock ファイルconda create --file
envレンダリング environment.ymlプレーン env ファイルを期待するツール
# 統一ロックからプラットフォーム別 explicit ファイルをレンダリング
conda-lock render -p linux-64

ロックからインストール

# ロックに従って環境作成
conda-lock install --name myenv conda-lock.yml

# または micromamba で (高速)
micromamba create -n myenv -f conda-linux-64.lock
コマンド説明
conda-lock install -n NAMEロックから env を作成/更新
conda-lock install --mambaソルバー/インストーラーとして mamba を使用
conda create --file X.lockexplicit ロックを直接インストール

依存性更新

# すべてを再解決 (新バージョン許可)
conda-lock -f environment.yml -p linux-64 -p osx-arm64

# 1 パッケージのみ更新、残りをピン留め
conda-lock --update numpy -f environment.yml -p linux-64
タスクコマンド
完全なリフレッシュconda-lock を再実行
ターゲット型バンプ--update PKG
入力が変わらないことを確認--check-input-hash

pip 依存性を含める

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

conda-lock は conda と pip 依存性を同じロックファイルに解決します。これは重要です。混在を ad-hoc で混ぜることは壊れた環境の一般的なソース。

CI パターン

# 決定論的で高速 CI インストール
- run: conda-lock install --name ci conda-lock.yml
- run: conda run -n ci pytest
実践なぜ
conda-lock.yml をコミットロックは真実のソース
すべてのターゲットプラットフォームをロックmacOS の dev、Linux の CI
意図的に再生成依存性更新は レビュー可能な diff になる
env をキャッシュロックはキャッシング信頼性 にする

conda-lock 対 代替案

側面conda-lockenvironment.ymlpixiuv
再現可能正確なピン + ハッシュいいえ組み込みロック組み込みロック
Conda エコシステムはいはいはいいいえ (PyPI)
マルチプラットフォームロックはいN/Aはいはい
最適用途既存 conda プロジェクトロックシンプル/ad-hoc env新規 conda ベースプロジェクト純粋 Python プロジェクト

新規プロジェクトは pixi (ロック組み込み) または uv (純粋 Python) を検討。conda-lock は既存 conda ワークフローに再現可能性を装着。

リソース