الأنماط الشائعة لـ Python uv: التبعيات وuvx وتنفيذ السكريبت
تركّز هذه المقالة على أكثر خمس مهام في التطوير اليومي شيوعاً، مع قوالب عملية يمكن استخدامها فوراً. أتقن هذه الأنماط وستتمكن من التعامل مع 80% من السيناريوهات — الـ 20% المتبقية للقسم المتقدم.
النمط 1: إضافة التبعيات وإزالتها
# إضافة تبعية
uv add requests
uv add "requests>=2.31,<3" # مع قيود الإصدار
# تبعيات التطوير (اختبارات، lint، فحص الأنواع)
uv add --dev pytest ruff mypy
# إزالة
uv remove requestsuv add يحدّث pyproject.toml وuv.lock و.venv في آنٍ واحد — أمر واحد يفعل كل شيء.
النمط 2: uv run لتنفيذ أوامر المشروع
للسكريبتات وCLIs والاختبارات داخل المشروع، استخدم دائماً uv run:
uv run python main.py
uv run pytest
uv run ruff check .
uv run mypy src/لا حاجة للتفعيل، لا قلق من Python الخاطئ.
النمط 3: uvx لتشغيل أدوات CLI مستقلة
تريد تشغيل أداة مؤقتاً بدون إضافتها للمشروع؟ استخدم uvx (مكافئ لـ uv tool run):
# عند الطلب، يمكن التخلص منه
uvx ruff check .
uvx pycowsay "مرحباً uv"
# تثبيت إصدار
uvx ruff@0.5.0 check
# عندما يختلف اسم الحزمة عن الأمر
uvx --from httpie http https://httpbin.org/getuvx ينشئ بيئة مؤقتة لتشغيل الأداة بدون تلويث مشروعك — مثل تذوق طعام بدون شراء الباقة بأكملها. مثالي للحظات "أريد فقط تجربة هذا".
النمط 4: تبعيات السكريبت المضمّنة (PEP 723)
سكريبت واحد، لا تريد إنشاء مشروع؟ استخدم بيانات السكريبت المضمّنة:
# /// script
# dependencies = ["requests", "rich"]
# ///
import requests
from rich.pretty import pprint
r = requests.get("https://api.github.com/zen")
pprint(r.text)uv add --script fetch.py requests rich
uv run fetch.pyأو في سطر واحد:
uv run --with requests --with rich fetch.pyالنمط 5: الترحيل من requirements.txt
مشروع موجود مع requirements.txt؟ خذه مباشرةً:
uv add -r requirements.txtأو اجمعه في lockfile ثم زامن:
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txtبعد الترحيل، تعامل مع pyproject.toml كالمصدر الأساسي — يمكن استخدام requirements.txt كتنسيق تصدير.
الخطوات التالية
بعد تدريب الأنماط اليومية، إذا أردت تجربة تبديل إصدارات Python أو واجهة pip أو إعداد monorepo:
👉 متقدم