نصب کتابخانه بدون درد تحریم
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 امتحانش کنید.