تخطَّ إلى المحتوى

conda-lock - قفل بيئة Conda قابلة للتكرار

conda-lock - قفل بيئة Conda قابلة للتكرار

conda-lock يحل مشكلة قابلية إعادة الإنتاج لـ conda. يسرد environment.yml packages المطلوبة، لذا يمكن حل ذلك على ماكينتين بعد أسبوع ينتج إصدارات مختلفة — الكلاسيكية “تعمل على جهازي”. conda-lock يحل البيئة مرة واحدة وكتب قفل ملف مع إصدارات دقيقة وبناء وتجزئات لكل منصة تستهدفها، بحيث تصبح التثبيتات حتمية وسريعة (لا حل في وقت التثبيت).

التثبيت

الطريقةالأمر
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.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
envenvironment.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إنشاء/تحديث البيئة من قفل
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، CI على Linux
إعادة الحل بقصدتحديثات التبعية تصبح diffs قابلة للمراجعة
ذاكرة البيئةالأقفال تجعل التخزين المؤقت موثوقًا به

conda-lock مقابل البدائل

الجانبconda-lockenvironment.ymlpixiuv
قابل للتكراردبابيس دقيقة + تجزئاتلاقفل مدمجقفل مدمج
نظام condaنعمنعمنعملا (PyPI)
قفل متعدد منصةنعمN/Aنعمنعم
الأفضل لـقفل مشاريع conda الموجودةبيئات بسيطة/مخصصةمشاريع conda جديدةمشاريع Python نقية

للمشاريع الجديدة تفكر في pixi (القفل مدمج) أو uv للـ Python النقية؛ conda-lock retrofits القابلية المتكررة إلى سير العمل conda الموجود.

الموارد