📰 مقالات 🐍 اخبار پایتون uv: جایگزین pip که ۱۰۰ برابر …
📝 مقاله 🐍 اخبار پایتون ⭐ ویژه

uv: جایگزین pip که ۱۰۰ برابر سریع‌تر است — راهنمای کامل ۲۰۲۶

یک ابزار Rust به جای شش ابزار Python — pip، venv، pyenv، poetry، pipx و twine را کنار بگذارید

uv: جایگزین pip که ۱۰۰ برابر سریع‌تر است — راهنمای کامل ۲۰۲۶
meisam
میثم شبانی
نویسنده
📅 ۱۴۰۵/۰۳/۱۰
10 دقیقه
👁 54
❤️ 2

اگر هنوز با pip، venv، pyenv، و poetry کار می‌کنید، این مقاله را بخوانید. uv یک ابزار نوشته‌شده با Rust است که همه این‌ها را با یک binary جایگزین می‌کند — و این کار را ۱۰ تا ۱۰۰ برابر سریع‌تر انجام می‌دهد.

ساخته شده توسط Astral — همان تیمی که Ruff را ساخت — uv در مه ۲۰۲۶ به صفحه اول Hacker News رسید و دنیای Python packaging را متحول کرد.

💡
uv در یک نگاه

سازنده: Astral (تیم Ruff)
زبان: Rust
آخرین نسخه: مه ۲۰۲۶
سرعت بدون cache: 8-10x سریع‌تر از pip
سرعت با cache: 80-115x سریع‌تر
ساخت venv: 50x سریع‌تر از python -m venv
جایگزین: pip، venv، pip-tools، pipx، pyenv، poetry، twine

۱. چرا pip دیگر کافی نیست؟

یک Python developer معمولی در ۲۰۲۴ با این stack کار می‌کرد:

پیش از uv، برای یک پروژه ساده نیاز داشتید:
- pyenv برای مدیریت نسخه Python
- virtualenv یا venv برای محیط مجازی
- pip برای نصب پکیج
- pip-tools برای lockfile
- pipx برای ابزارهای global

هر کدام config جداگانه، سینتکس جداگانه، و مشکلات جداگانه. uv همه اینها را با یک binary حل کرد.

۲. نصب uv — یک دستور، همه چیز

💻 BASH — نصب uv روی Linux/macOS/Windows
# Linux و macOS curl -LsSf https://astral.sh/uv/install.sh | sh # Windows powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # ─── یا اگر curl ندارید ─── pip install uv # بررسی نصب uv --version # uv 0.9.x # نکته مهم: uv به Python نیاز ندارد! # یک standalone binary است که Python را هم مدیریت می‌کند

۳. مدیریت نسخه Python — بدون pyenv

💻 BASH — نصب و مدیریت Python با uv
# نصب Python uv python install 3.12 uv python install 3.13 uv python install 3.14 # لیست نسخه‌های نصب‌شده uv python list # استفاده از نسخه خاص uv run --python 3.13 script.py # پین کردن نسخه برای پروژه uv python pin 3.12 # فایل .python-version ساخته می‌شود

۴. شروع پروژه جدید — جایگزین کامل Poetry

💻 BASH — ساخت پروژه جدید با uv
# ساخت پروژه uv init my-django-project cd my-django-project # ساختار فایل‌ها: # my-django-project/ # ├── .python-version # نسخه Python # ├── main.py # ├── pyproject.toml # جایگزین setup.py و requirements.txt # └── uv.lock # lockfile دقیق و cross-platform # اضافه کردن dependency uv add django uv add django celery redis # dependency برای development uv add --dev pytest black ruff # نصب همه dependency ها uv sync # اجرای برنامه uv run python manage.py runserver
💫
pyproject.toml جدید چه شکلی است؟

[project]
name = "my-django-project"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"django>=5.2",
"celery>=5.4",
]

[dependency-groups]
dev = ["pytest>=8.0", "ruff>=0.9"]

فقط dependency های مستقیم — uv.lock فایل دقیق همه چیز را نگه می‌دارد.

۵. uv به جای pip — drop-in replacement

💻 BASH — دستورات آشنا با سرعت جدید
# همه دستورات pip با uv کار می‌کنند uv pip install django uv pip install -r requirements.txt uv pip freeze > requirements.txt uv pip list uv pip uninstall django # ساخت venv — 50x سریع‌تر uv venv uv venv .venv --python 3.13 source .venv/bin/activate # نصب ابزارهای global (جایگزین pipx) uv tool install ruff uv tool install black uv tool run ruff check .

۶. uv در Docker — build سریع‌تر

یکی از بهترین کاربردهای uv در Docker است. چون uv یک standalone binary است و به Python نیاز ندارد، می‌توانید آن را در مرحله build کپی کنید و از cache آن برای سرعت بخشیدن به build استفاده کنید.

به جای اینکه هر بار pip install منتظر بمانید، uv با cache هوشمند build را از دقیقه‌ها به ثانیه‌ها تبدیل می‌کند.

💻 BASH — Dockerfile بهینه با uv
FROM python:3.12-slim # نصب uv — فقط یک binary COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv WORKDIR /app # کپی lockfile — cache layer جداگانه COPY pyproject.toml uv.lock ./ # نصب dependency ها با cache RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --frozen --no-dev # کپی کد COPY . . # اجرا CMD ["uv", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"]

۷. مقایسه سریع: uv در برابر رقبا

ویژگیpip+venvPoetryuv
سرعت نصبکندمتوسط10-100x سریع‌تر
مدیریت Pythonنیاز به pyenvخیربله داخلی
Lockfileنیاز به pip-toolspoetry.lockuv.lock
ابزارهای globalنیاز به pipxخیربله داخلی
Docker-friendlyمتوسطمتوسطعالی
نیاز به Pythonبلهبلهخیر
پشتیبانی PEP 621بلهاز v2.0بله کامل

۸. نقاط ضعف — صادقانه بگوییم

uv کامل نیست. در مه ۲۰۲۶ یک مقاله در Hacker News منتشر شد که نقاط ضعف آن را بررسی کرد. صادقانه باید بدانید که uv در برخی موارد هنوز از Poetry و pnpm عقب‌تر است.

⚠️
نقاط ضعف فعلی uv در ۲۰۲۶

دستور uv outdated هنوز پر از noise است — باید از uv pip list --outdated استفاده کنید.

workflow آپدیت پکیج‌ها کمی clunky‌تر از Poetry است.

برای monorepo های پیچیده هنوز در حال بهبود است.

برخی پکیج‌های قدیمی با build system های غیراستاندارد مشکل دارند.

۹. مهاجرت از pip به uv — گام به گام

💻 BASH — مهاجرت پروژه موجود به uv
# گام ۱: نصب uv curl -LsSf https://astral.sh/uv/install.sh | sh # گام ۲: ساخت pyproject.toml از requirements.txt uv init --no-readme uv add $(cat requirements.txt | grep -v "^#" | tr " " " ") # گام ۳: ساخت lockfile uv lock # گام ۴: بررسی همه چیز کار می‌کند uv sync uv run python manage.py check # گام ۵: حذف فایل‌های قدیمی rm requirements.txt requirements-dev.txt setup.py # فقط pyproject.toml و uv.lock نگه دارید # از این به بعد: uv add django-extensions # به جای pip install uv remove old-package # به جای pip uninstall uv sync # به جای pip install -r requirements.txt
uv برای Python همان کاری را می‌کند که Cargo برای Rust کرد — یک ابزار unified که همه چیز را در خود دارد و آنقدر سریع است که دیگر به فکر سرعت نمی‌افتید.
Charlie Marsh · سازنده Ruff و uv — Astral

جمع‌بندی — آیا باید همین الان مهاجرت کنید؟

برای پروژه‌های جدید: بله — همین الان از uv شروع کنید. هیچ دلیلی برای شروع با pip و venv وجود ندارد.

برای پروژه‌های موجود: مهاجرت آسان است و معمولاً کمتر از ۱۵ دقیقه طول می‌کشد.

برای تیم‌ها: uv.lock تضمین می‌کند همه اعضای تیم دقیقاً همان محیط را دارند.

  • یک binary به جای شش ابزار مجزا
  • 10-100x سریع‌تر از pip در نصب پکیج
  • 50x سریع‌تر از python -m venv
  • مدیریت نسخه Python بدون pyenv
  • uv.lock برای reproducible builds
  • Docker-friendly بدون dependency به Python
  • کاملاً سازگار با pip و pyproject.toml
  • نقطه ضعف: workflow آپدیت هنوز در حال بهبود
همین الان شروع کنید

uv install کنید و یک پروژه تست بسازید:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv init test-project && cd test-project
uv add requests && uv run python -c "import requests; print(requests.__version__)"

۱۰. ساخت پروژه جنگو با uv — گام به گام کامل

💡
پیش‌نیاز: فقط uv نصب باشد

هیچ چیز دیگری لازم نیست — نه Python، نه pip، نه virtualenv. uv همه چیز را خودش مدیریت می‌کند.

💻 BASH — گام ۱ — نصب uv (یک بار برای همیشه)
# Linux و macOS curl -LsSf https://astral.sh/uv/install.sh | sh # بعد از نصب، terminal را ببندید و دوباره باز کنید # بررسی نصب موفق uv --version # uv 0.9.x # اگر دستور کار نکرد با این دستور نصب کن pip install uv
💻 BASH — گام ۲ — ساخت پروژه جنگو با ساختار config
# ساخت پوشه پروژه mkdir my-django-app cd my-django-app # مقداردهی اولیه پروژه با uv uv init . # نصب Python 3.12 (uv خودش دانلود می‌کند) uv python pin 3.12 # نصب جنگو uv add django # بررسی نصب uv run python -m django --version # 5.x.x
💻 BASH — گام ۳ — ساخت پروژه جنگو با پوشه config
# ساخت پروژه جنگو — پوشه config به عنوان تنظیمات uv run django-admin startproject config . # ساختار پوشه‌ها بعد از این دستور: # my-django-app/ # ├── config/ # │ ├── __init__.py # │ ├── settings.py # │ ├── urls.py # │ ├── asgi.py # │ └── wsgi.py # ├── manage.py # ├── pyproject.toml # ├── uv.lock # └── .python-version
💻 BASH — گام ۴ — اضافه کردن پکیج‌های رایج
# پکیج‌های پایه یک پروژه جنگو uv add djangorestframework uv add python-decouple uv add Pillow # پکیج‌های development (فقط برای محیط توسعه) uv add --dev black uv add --dev ruff uv add --dev pytest-django # مثال: اضافه کردن هر پکیج دیگری # uv add requests # uv add celery # uv add redis
💻 BASH — گام ۵ — تنظیم settings.py و اجرای پروژه
# ساخت app اول uv run python manage.py startapp core # ساخت database (SQLite پیش‌فرض) uv run python manage.py migrate # ساخت superuser uv run python manage.py createsuperuser # اجرای سرور uv run python manage.py runserver # http://127.0.0.1:8000 آماده است # یا با پورت دلخواه uv run python manage.py runserver 0.0.0.0:8080
💻 BASH — گام ۶ — دستورات روزانه که باید بدانید
# به جای pip install → uv add uv add django-extensions # به جای pip uninstall → uv remove uv remove django-extensions # به جای pip install -r requirements.txt → uv sync uv sync # به جای python manage.py → uv run python manage.py uv run python manage.py makemigrations uv run python manage.py migrate uv run python manage.py collectstatic # به جای source .venv/bin/activate → نیازی نیست! # uv خودش محیط مجازی را مدیریت می‌کند
💻 BASH — گام ۷ — کپی کامل: از صفر تا پروژه جنگوی آماده
# ═══════════════════════════════════════════ # فقط این دستورات را یکی یکی اجرا کنید # ═══════════════════════════════════════════ # ۱. نصب uv curl -LsSf https://astral.sh/uv/install.sh | sh # terminal را ببندید و دوباره باز کنید، بعد: # ۲. ساخت و ورود به پوشه پروژه mkdir my-django-app && cd my-django-app # ۳. مقداردهی اولیه uv init . uv python pin 3.12 # ۴. نصب پکیج‌ها uv add django python-decouple Pillow # ۵. ساخت پروژه جنگو uv run django-admin startproject config . # ۶. ساخت app uv run python manage.py startapp core # ۷. migrate و superuser uv run python manage.py migrate uv run python manage.py createsuperuser # ۸. اجرا uv run python manage.py runserver # ✅ http://127.0.0.1:8000 آماده است!
✅ تبریک — پروژه جنگو با uv آماده است!

از این به بعد هر بار که پروژه را باز می‌کنید فقط یک دستور کافی است:

uv run python manage.py runserver

نیازی به activate محیط مجازی، نیازی به pip، نیازی به pyenv نیست.