فصل ۱: شروع درست — نصب، ابزارها و محیط مجازی

pip، میرورهای ایرانی و requirements.txt

نصب کتابخانه بدون درد تحریم

pip مدیر بسته‌ی رسمی پایتون است و کتابخانه‌ها را از مخزن PyPI دانلود می‌کند. همیشه آن را به شکل python -m pip صدا بزنید، نه فقط pip؛ این‌طوری مطمئن هستید بسته دقیقاً برای همان پایتونی نصب می‌شود که python به آن اشاره دارد.

python -m pip install requests
python -m pip install "django>=5.0,<5.2"
python -m pip list
python -m pip show requests
python -m pip uninstall requests

میرور ایرانی

دسترسی مستقیم به PyPI از ایران گاهی کند است، قطع می‌شود یا به‌خاطر تحریم خطای 403 می‌دهد. چند سرویس ابری ایرانی (مثل رانفلر، لیارا و آروان) آینه‌ی PyPI دارند. می‌توانید برای یک دستور یا برای همیشه از میرور استفاده کنید:

python -m pip install jdatetime -i https://mirror-pypi.runflare.com/simple
python -m pip config set global.index-url https://mirror-pypi.runflare.com/simple
python -m pip config set global.timeout 60
python -m pip config list
python -m pip config debug

تنظیم دائمی در فایل %APPDATA%\pip\pip.ini ذخیره می‌شود. آدرس دقیق هر میرور ممکن است تغییر کند؛ آن را از مستندات همان سرویس بگیرید و اگر یک میرور از کار افتاد، دیگری را امتحان کنید. اگر میرور با گواهی SSL مشکل داشت، راه درست global.trusted-host برای همان دامنه است، نه خاموش کردن کامل بررسی امنیتی.

requirements.txt: فهرست خرید پروژه

این فایل می‌گوید پروژه به چه کتابخانه‌هایی با چه نسخه‌ای نیاز دارد. دو روش رایج:

روشدستورمزیت / عیب
freeze کاملpython -m pip freezeهمه‌ی بسته‌ها با نسخه‌ی دقیق؛ تکرارپذیر اما شلوغ
دستینوشتن فقط بسته‌های اصلیخوانا؛ اما نسخه‌ی وابستگی‌ها ثابت نیست

یک requirements دستی خوب چنین شکلی دارد:

# requirements.txt
requests>=2.32,<3
jdatetime>=4.1
pytest>=8        # فقط برای توسعه

و در سیستم جدید یا روی سرور:

py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt

نکته‌هایی که کمتر کسی می‌داند

  • در Windows PowerShell 5.1، دستور pip freeze > requirements.txt فایل را با کدگذاری UTF-16 می‌سازد؛ pip آن را می‌خواند ولی git و ابزارهای دیگر آن را باینری می‌بینند. بنویسید python -m pip freeze | Out-File -Encoding utf8 requirements.txt (در PowerShell 7 مشکلی نیست).
  • pip install --user را داخل venv هرگز نزنید؛ بسته به پوشه‌ی کاربر می‌رود و venv آن را نمی‌بیند.
  • متغیر محیطی PIP_INDEX_URL بر pip.ini اولویت دارد؛ اگر میرورتان «عوض نمی‌شود»، pip config debug نشان می‌دهد تنظیم از کجا می‌آید.
  • python -m pip download -r requirements.txt -d wheels همه‌ی بسته‌ها را دانلود می‌کند؛ روی سرور بدون اینترنت با pip install --no-index --find-links wheels -r requirements.txt نصب کنید.
  • برای سرعت، ابزار جدید uv همان کار pip و venv را ده‌ها برابر سریع‌تر انجام می‌دهد و با UV_INDEX_URL با میرور ایرانی هم کار می‌کند؛ بعد از مسلط شدن به pip امتحانش کنید.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.