콘텐츠로 이동

conda-lock - 재현 가능한 Conda 환경 락킹 치트시트

conda-lock - 재현 가능한 Conda 환경 락킹 치트시트

conda-lock은 conda의 재현성 문제를 해결합니다. environment.yml요청된 패키지를 나열하므로, 한 주 간격으로 두 머신에서 이를 풀면 다른 버전을 생성할 수 있습니다 — 클래식한 “내 머신에서 작동합니다.” conda-lock은 환경을 한 번 풀고 모든 플랫폼에 대한 정확한 버전, 빌드, 해시가 있는 락 파일을 작성하여 설치가 결정론적이고 빠르도록 만듭니다 (설치 시에 풀링 없음).

설치

방법명령
pipx (권장)pipx install conda-lock
condaconda install -c conda-forge conda-lock
pippip install conda-lock
확인conda-lock --version

락 파일 생성

# 환경.yml에서 여러 플랫폼에 대한 락
conda-lock -f environment.yml -p linux-64 -p osx-arm64 -p win-64
플래그목적
-f, --file입력 스펙 (environment.yml, pyproject.toml, meta.yaml)
-p, --platform대상 플랫폼 (반복 가능)
-k, --kind출력 종류: lock (통합), explicit, env
--lockfile출력 경로 (기본값 conda-lock.yml)
--check-input-hash입력이 변경되지 않으면 재풀링 건너뛰기

락 파일 종류

종류생성사용
lock통합 conda-lock.yml (모든 플랫폼)이를 git에 커밋
explicit플랫폼별 .lock 파일conda create --file
env렌더링된 environment.yml평탄 환경 파일을 예상하는 도구
# 통합 락에서 플랫폼별 명시적 파일 렌더링
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.lock명시적 락 직접 설치

종속성 업데이트

# 모든 것을 다시 풀기 (새 버전 허용)
conda-lock -f environment.yml -p linux-64 -p osx-arm64

# 한 패키지만 업데이트, 나머지 고정
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 종속성을 동일한 락 파일로 풀어서, 이는 두 개를 임시로 섞는 것이 깨진 환경의 일반적인 소스이기 때문에 중요합니다.

CI 패턴

# 결정론적, 빠른 CI 설치
- run: conda-lock install --name ci conda-lock.yml
- run: conda run -n ci pytest
관행이유
conda-lock.yml 커밋락이 진실의 소스
모든 대상 플랫폼 잠금macOS의 개발자, Linux의 CI
의도적으로 재생성종속성 업데이트가 검토 가능한 diff가 됨
env 캐시락이 캐싱을 신뢰할 수 있게 만듦

conda-lock vs 대안

측면conda-lockenvironment.ymlpixiuv
재현 가능정확한 핀 + 해시아니오기본 제공 락기본 제공 락
Conda 생태계아니오 (PyPI)
다중 플랫폼 락해당 없음
최고의 용도기존 conda 프로젝트 잠금간단/임시 env새로운 conda 기반 프로젝트순수 Python 프로젝트

새 프로젝트는 pixi (기본 제공 잠금) 또는 순수 Python을 위한 uv를 고려하세요; conda-lock은 기존 conda 워크플로에 재현성을 개조합니다.

리소스