مقدمه
در محیطهایی که به اینترنت دسترسی ندارید (Airgap) یا در شبکه داخلی با محدودیت دسترسی کار میکنید، نیاز دارید مخزن اختصاصی پکیجهای Python را راهاندازی کنید و کلاینت pip را به سمت آن هدایت کنید. این کار باعث میشود بدون نیاز به اینترنت، همچنان بتوانید پکیجهای مورد نیاز خود را نصب کنید. در این پست روشهای مختلف تنظیم pip برای اتصال به یک PyPI Mirror داخلی را بررسی میکنیم. (اگر به دنبال راهاندازی خود میرور هستید، پست راهاندازی PyPI Mirror در Airgap را ببینید.)
تنظیم از طریق pip config
سادهترین روش استفاده از دستور pip config است. این دستور تنظیمات را به صورت سراسری (global) یا محلی (local) ذخیره میکند:
pip config set global.index-url https://YOUR_MIRROR_URL/simpleاین تنظیم در فایلهای زیر ذخیره میشود:
- لینوکس / macOS:
~/.config/pip/pip.conf - ویندوز:
%APPDATA%pippip.ini
اگر فقط برای یک پروژه خاص نیاز به تغییر دارید، از پرچم --user یا اجرای دستور در همان دایرکتوری پروژه استفاده کنید.
تنظیم از طریق محیط متغیر
روش دوم استفاده از متغیرهای محیطی است. این روش برای محیطهای موقتی یا Docker و CI/CD بسیار مناسب است:
export PIP_INDEX_URL=https://YOUR_MIRROR_URL/simple
export PIP_TRUSTED_HOST=YOUR_MIRROR_IPبا تنظیم PIP_INDEX_URL، pip به جای PyPI رسمی از آدرس مشخص شده استفاده میکند. متغیر PIP_TRUSTED_HOST نیز برای زمانی که میرور شما از HTTPS استفاده نمیکند ضروری است تا pip به آن اعتماد کند.
تنظیم فایل pip.conf مستقیم
میتوانید فایل تنظیمات را مستقیماً ایجاد یا ویرایش کنید. مسیر فایل در لینوکس:
~/.config/pip/pip.confمحتوای فایل:
[global]
index-url = https://YOUR_MIRROR_URL/simple
trusted-host = YOUR_MIRROR_IPفایل pip.conf از سه سطح تشکیل شده: global (سیستمی)، user (کاربری) و site (پروژه). اولویت با سطح site است.
سرویسهای عمومی PyPI Mirror در ایران
اگر به اینترنت محدود دسترسی دارید و نیاز به mirror عمومی دارید، چند سرویس پایدار در ایران موجود است:
| نام سرویس | آدرس |
|---|---|
| دانشگاه صنعتی شریف | https://pypi.sharif.edu/ |
| دانشگاه علوم پزشکی شیراز (SUMS) | http://pypi.sums.ac.ir/ |
برای استفاده کافیست یکی از آدرسها را در تنظیمات index-url قرار دهید.
تست تنظیمات
پس از اعمال تنظیمات، با دستور زیر درستی آن را بررسی کنید:
pip install requests --verboseخروجی باید نشان دهد که pip به جای https://pypi.org/simple از آدرس mirror شما استفاده میکند. همچنین میتوانید با دستور زیر تنظیمات فعلی را مشاهده کنید:
pip config listاین دستور تمام تنظیمات فعال pip را نمایش میدهد.