Python uv متقدم: إصدارات Python وواجهة pip وتثبيت الأدوات
عندما تنتقل المتطلبات من "طالما يعمل" إلى "اختبار متعدد الإصدارات، وpipelines متوافقة مع الإصدارات القديمة، وإدارة أدوات عامة"، uv يستطيع التعامل معها. هذه المقالة تنقلك من الجري المنفرد في الزنازين إلى المداهمة كفريق.
إدارة إصدارات Python
uv لديه تنزيل وإدارة Python مدمجان — لا حاجة لتثبيت pyenv منفصلاً.
# تثبيت إصدارات متعددة
uv python install 3.10 3.11 3.12
# تثبيت مشروع على إصدار محدد (ينشئ .python-version)
uv python pin 3.11
# إنشاء venv بإصدار محدد
uv venv --python 3.12
# تشغيل بإصدار محدد
uv run --python 3.10 pytestفي المرة الأولى لاستخدام إصدار، يُنزَّل تلقائياً — الاستخدامات التالية تنطلق مباشرةً من الذاكرة المؤقتة.
واجهة متوافقة مع pip
CI وDocker والسكريبتات الموجودة لا تزال تستخدم pip؟ uv يوفر بديلاً مُسقطاً:
# مكافئ لـ pip install -r requirements.txt
uv pip install -r requirements.txt
# جمع المتطلبات (عبر الأنظمة، قابل للتكرار)
uv pip compile requirements.in --universal -o requirements.txt
# مزامنة البيئة (بدقة من lockfile)
uv pip sync requirements.txt
# إنشاء venv
uv venvبدّل إلى uv pip والمعلمات متطابقة تقريباً، لكن السرعة تقفز بدرجة قياسية — مثل الترقية من دراجة هوائية إلى دراجة نارية: نفس الطريق، تجربة مختلفة تماماً. تريد ترقية مشروعك القديم بدون تغييرات كبيرة؟ ابدأ بـ uv pip، إطلاق سهل.
تثبيت الأدوات العامة (uv tool)
لا تريد تشغيل uvx في كل مرة للأدوات التي تستخدمها كثيراً؟ ثبّتها عاملياً:
uv tool install ruff
uv tool install httpie
# استدعها مباشرةً بعد ذلك
ruff check .
http https://httpbin.org/getترقية أدوات فردية أو جميعها دفعة واحدة:
uv tool upgrade ruff
uv tool upgrade --all
uv tool installينشئ بيئات معزولة لن تتعارض مع تبعيات المشروع. للإصدارات المثبّتة للمشروع، استخدمuv add --dev.
Lockfile السكريبت والـ Shebang
تريد سكريبتاً واحداً قابلاً للتكرار أيضاً؟ يمكنك قفل تبعياته:
uv lock --script example.pyهذا ينشئ example.py.lock. عندما تشغّل uv run example.py، يستخدم ذلك lockfile.
أو اجعله قابلاً للتنفيذ:
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["httpx"]
# ///
import httpx
print(httpx.get("https://example.com"))chmod +x fetch
./fetchالخطوات التالية
مع إتقان القدرات المتقدمة، استخدم مجموعة إرشادات للحد من المخاطر:
👉 أفضل الممارسات