Mirror چیست و چرا وجود دارد؟
PyPI (Python Package Index) مخزن اصلی پکیجهای پایتون است. Mirror ها کپیهایی از این مخزن هستند که توسط سازمانها، شرکتها یا افراد مختلف میزبانی میشوند.
دلایل اصلی وجود Mirror ها:
- سرعت بالاتر: Mirror های محلی یا منطقهای تاخیر شبکه را کاهش میدهند
- دسترسی در مناطق محدود: در برخی کشورها دسترسی مستقیم به PyPI ممکن نیست
- امنیت و اعتماد: سازمانها میتوانند Mirror خصوصی با کنترل کامل داشته باشند
- کاهش بار سرور اصلی: توزیع بار بین چندین سرور
- کار آفلاین: امکان نصب پکیجها بدون اتصال به اینترنت عمومی
روش اول: استفاده Global (سراسری)
در این روش، تمام پکیجها از یک Mirror خاص نصب میشوند.
روش pip.conf (توصیه شده)
فایل تنظیمات pip را ایجاد یا ویرایش کنید:
# در لینوکس/مک:
~/.config/pip/pip.conf
# در ویندوز:
%APPDATA%\pip\pip.ini
محتوای فایل:
[global]
trusted-host = mirrors.example.com
index-url = https://mirrors.example.com/pypi/simple
و یا از طریق خود pip:
pip config --user set global.index https://mirrors.example.com/pypi/simple
pip config --user set global.index-url https://mirrors.example.com/pypi/simple
pip config --user set global.trusted-host mirrors.example.com
استفاده از متغیر محیطی
# در لینوکس/مک (bash):
export PIP_INDEX_URL=https://mirrors.example.com/pypi/simple
# در ویندوز (CMD):
set PIP_INDEX_URL=https://mirrors.example.com/pypi/simple
روش دوم: استفاده Per-Package (برای هر پکیج)
گاهی نیاز دارید فقط یک پکیج خاص را از Mirror خاصی نصب کنید.
استفاده از فلگ --index-url برای یک دستور
pip install numpy --index-url https://mirrors.example.com/pypi/simple
استفاده از فلگ -i
pip install pandas -i https://mirrors.example.com/pypi/simple
نصب نسخه خاص از یک Mirror متفاوت
pip install django==4.2 --index-url https://mirrors.example.com/pypi/simple
ترکیب چند Mirror با --extra-index-url
pip install some-package --extra-index-url https://mirrors.example.com/pypi/simple
تفاوت index-url و extra-index-url:
- index-url: فقط از این Mirror استفاده میشود
- extra-index-url: علاوه بر Mirror پیشفرض، این Mirror هم بررسی میشود
نکات مهم
- trusted-host: حتماً اضافه کنید تا خطاهای SSL نداشته باشید
- ترتیب جستجو: pip ابتدا در index-url اصلی جستجو میکند
- نسخه pip: مطمئن شوید pip خود را بهروز نگه دارید
- virtualenv: بهتر است هر پروژه محیط مجازی خودش را داشته باشد
بررسی تنظیمات فعلی
pip config list
pip config debug