یک ابزار Rust به جای شش ابزار Python — pip، venv، pyenv، poetry، pipx و twine را کنار بگذارید
اگر هنوز با 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 — یک دستور، همه چیز
# 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
# نصب 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
# ساخت پروژه
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
# همه دستورات 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 را از دقیقهها به ثانیهها تبدیل میکند.
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+venv | Poetry | uv |
|---|
| سرعت نصب | کند | متوسط | 10-100x سریعتر |
| مدیریت Python | نیاز به pyenv | خیر | بله داخلی |
| Lockfile | نیاز به pip-tools | poetry.lock | uv.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 — گام به گام
# گام ۱: نصب 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 همه چیز را خودش مدیریت میکند.
# Linux و macOS
curl -LsSf https://astral.sh/uv/install.sh | sh
# بعد از نصب، terminal را ببندید و دوباره باز کنید
# بررسی نصب موفق
uv --version
# uv 0.9.x
# اگر دستور کار نکرد با این دستور نصب کن
pip install uv
# ساخت پوشه پروژه
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
# ساخت پروژه جنگو — پوشه 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
# پکیجهای پایه یک پروژه جنگو
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
# ساخت 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
# به جای 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 خودش محیط مجازی را مدیریت میکند
# ═══════════════════════════════════════════
# فقط این دستورات را یکی یکی اجرا کنید
# ═══════════════════════════════════════════
# ۱. نصب 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 نیست.