دستور pip install را میزنید و منتظر میمانید؛ اما یا فرایند نصب بهشکل عجیبی کند است یا در نهایت با خطای Timeout مواجه میشوید. این تجربهای است که تقریباً هر توسعهدهنده پایتون در ایران مخصوصا در این روزهای جنگی با آن دستوپنجه نرم کرده است. این مشکل اغلب بهدلیل قطعی اینترنت بینالملل، فاصله زیاد با سرورهای اصلی PyPI یا محدودیتهای شبکه رخ میدهد. راهحل این چالش، استفاده از مخازن جایگزین pip (که به آنها Mirror هم گفته میشود) است. این مخازن در واقع کپیهای کاملی از مخزن اصلی هستند که روی سرورهای داخلی میزبانی میشوند و سرعت نصب را دهها برابر افزایش میدهند.
در این مقاله به شما نشان میدهیم چطور بهصورت موقت یا دائمی، مخزن pip را تغییر دهید تا برای همیشه از شر کندی و خطاهای نصب خلاص شوید.
فهرست مطالب
چرا به مخازن جایگزین pip نیاز داریم؟
برای هر توسعهدهندهای ایرانی پیشآمده که در حساسترین لحظات پروژه، وقتی منتظر نصب پکیج پایتون با pip است، با کندی کلافهکننده یا خطاهای پیدرپی مواجه شود. واقعیت این است که استفاده از مخزن پیشفرض (PyPI) در شرایط شبکه ما همیشه ممکن نیست. در چنین شرایطی، استفاده از مخازن جایگزین pip (یا همان Mirrorهای داخلی) تبدیل به ستون فنی پروژه میشود.

اما چرا باید به فکر تغییر مخزن باشیم؟ در ادامه سه دلیل اصلی را بررسی میکنیم:
۱- افزایش فوقالعاده سرعت دانلود
یکی از بزرگترین مزایای استفاده از mirror pip، کاهش چشمگیر زمان دریافت پکیجها است. طبق مستندات رسمی pip درخصوص سیستم Caching، زمانی که شما از یک مخزن داخلی استفاده میکنید، درخواستها بهجای طیکردن مسیر طولانی تا سرورهای خارجی، ازطریق سرورهای نزدیکتر (که نسخهای از پکیجها را کش کردهاند) پاسخ داده میشوند. این یعنی رفع کندی pip install در ایران و مثلاً تجربه نصب سریع کتابخانههای پایتون در چند ثانیه.
۲-رفع مشکلات تحریم و فیلترینگ
احتمالاً بارها با خطاهای 403 یا مسدودشدن دسترسی مواجه شدهاید. متاسفانه تحریم pip و فیلترینگ، دو لبه قیچی هستند که فرایند توسعه را مختل میکنند. با نصب package با pip از mirror داخلی، شما این محدودیتهای آزاردهنده را دور میزنید؛ بدون اینکه نیازی به ابزارهای تغییر آیپی داشته باشید.
۳- پایداری بیشتر در زمان اختلالات اینترنت
توسعه نرمافزار نیازمند یک محیط پایدار است. در روزهایی که اینترنت بینالملل با اختلال یا افت سرعت همراه است، پیداکردن بهترین mirror برای pip در ایران حکم یک راه نجات را دارد. مخازن داخلی بهدلیل استفاده از زیرساختهای شبکه ملی، پایداری بسیار بالاتری دارند و تضمین میکنند که جریان کار شما بهدلیل مشکلات ارتباطی خارج از کشور متوقف نشود.
چگونه مخزن pip را تغییر دهیم؟
گاهی پیش میآید که درحال دیباگ یک اسکریپت پایتون هستید و فقط به یک کتابخانه ساده نیاز دارید، اما دستور pip install روی حالت Timeout گیر میکند. در این لحظات، دانستن اینکه چگونه مخزن pip را تغییر دهیم، میتواند ساعتها در وقت شما صرفهجویی کند.
برای تنظیم مخازن جایگزین pip، براساس مستندات رسمی پیکربندی پایتون، ما دو مسیر پیش رو داریم: استفاده از روش موقت برای یک نصب سریع یا تنظیمات سراسری برای زمانی که میخواهید این مشکل را برای همیشه روی سیستمعامل خود حل کنید. بیایید هر دو روش را با جزئیات بررسی کنیم.
نکته مهم پیشاز تغییر مخازن:
پیشاز معرفی مخازن، یک نکته حیاتی را به خاطر بسپارید: اگر در شرایط قطعی اینترنت بینالملل قصد استفاده از این مخازن بهمنظور نصب package بدون فیلترشکن دارید، حتماً مطمئن شوید که DNS سیستم شما روی سرورهای داخلی (مثل DNSهای شرکت ارائهدهنده اینترنتتان) تنظیم شده باشد. در غیر این صورت، سیستم در ترجمه آدرس دامنه این مخازن ناکام مانده و بازهم با خطا مواجه میشوید.
۱- روش موقت (برای یک بار نصب)
گاهی اوقات فقط روی سیستم یک همکار کار میکنید یا درحال نوشتن یک Dockerfile هستید و نیازی به تغییرات دائمی ندارید. در این شرایط، بهترین کار پاسدادن آدرس مخزن جدید بهصورت مستقیم در همان دستور نصب است.
برای این کار کافی است از فلگ –index-url استفاده کنید. ساختار کلی دستور به شکل زیر است:
pip install --index-url [URL] package_name
مثال واقعی:
فرض کنید میخواهیم پکیج pandas را از طریق یک mirror فرضی نصب کنیم. دستور ما اینگونه نوشته میشود:
pip install --index-url https://example-mirror.com/simple/ pandas
نکته تجربی: این روش برای تست کردن کیفیت و سرعت یک مخزن جایگزین pip جدید قبلاز اعمال تنظیمات دائمی، فوقالعاده کاربردی است.
۲- روش دائمی (تنظیمات سراسری)
اگر روی سیستم شخصی یا سرور توسعه خودتان کار میکنید، تایپ کردن مداوم آدرس طولانیِ مخزن منطقی نیست. با تغییر فایل پیکربندی (Configuration file) میتوانید تنظیم مخزن جایگزین pip را یکبار برای همیشه انجام دهید. نحوه انجام این کار به سیستمعامل شما بستگی دارد، اما ساختار کدی که درون فایل قرار میدهیم در همه سیستمعاملها یکسان است.
تغییر مخزن pip در لینوکس و مکاواس
در سیستمعاملهای مبتنی بر یونیکس (لینوکس و macOS)، فایل تنظیمات pip معمولاً در مسیر کاربری شما قرار دارد. یک ترمینال باز کنید و به یکی از این دو مسیر بروید (اگر فایل وجود نداشت آن را بسازید):
- مسیر استاندارد: ~/.config/pip/pip.conf
- مسیر قدیمیتر: ~/.pip/pip.conf
سپس فایل را با ویرایشگر متنی دلخواه (مثل nano یا vim) باز کرده و قطعه کد زیر را در آن قرار دهید:
[global]
index-url = https://example-mirror.com/simple/
با ذخیره این فایل، از این به بعد هربار که دستور pip install را اجرا کنید، دانلود بهصورت خودکار از همین آدرس انجام میشود.
تغییر مخزن pip در ویندوز
در سیستمعامل ویندوز، فرایند کاملاً مشابه است، فقط مسیر فایل تفاوت دارد. برای دسترسی سریع، کلیدهای Win + R را فشار دهید، عبارت %APPDATA% را تایپ کنید و اینتر بزنید. در پوشه بازشده، بهدنبال پوشهای به نام pip بگردید. اگر وجود نداشت آن را بسازید. داخل این پوشه، یک فایل متنی با نام pip.ini ایجاد کنید و دقیقاً همان تنظیمات سراسری pip را درون آن قرار دهید:
[global]
index-url = https://example-mirror.com/simple/
| نام فایل | مسیر فایل تنظیمات (Configuration Path) | سیستم عامل |
|---|---|---|
| pip.conf | ~/.config/pip/ یا ~/.pip/ | لینوکس / مک |
| pip.ini | %APPDATA%\pip\ | ویندوز |
با همین چند قدم ساده، شما کنترل کاملی روی نحوه مشکل نصب پکیج پایتون در سیستم خود پیدا کردهاید و دیگر معطل قطعیهای ناگهانی مخزن اصلی نخواهید شد.
لیست بهترین mirror برای pip در ایران
در ادامه، لیستی از بهترین مخازن جایگزین pip در ایران را گردآوری کردهایم. استفاده از این سرویسها بهعنوان جایگزین pypi برای pip، راهکاری مطمئن برای دور زدن تحریمها و توسعه مستمر است:
- ابر فردوسی: مخازن رسمی ما و یکی از جدیدترین گزینهها برای توسعهدهندگان است که میتوانید برای آموزش گامبهگام اتصال به آن به راهنمای استفاده از مخازن ابر فردوسی مراجعه کنید.
- دانشگاه صنعتی اصفهان (IUT): یکی از مخازن دانشگاهی معتبر که بخش بزرگی از پکیجهای متنباز را پوشش میدهد. آدرس: https://repo.iut.ac.ir/
- مخزن ملی منابع متنباز: یک پروژه دولتی (مرتبط با سازمان فناوری اطلاعات) برای میزبانی منابع اوپنسورس. آدرس: https://repo-portal.ito.gov.ir/
- لیارا (Liara): پلتفرم ابری لیارا نیز یک mirror داخلی pip پایدار ارائه میدهد که بهروزرسانی مداومی دارد. آدرس: https://liara.ir/mirrors/pypi/
- شاتل (Shatel): یکی از قدیمیترین و شناختهشدهترین مخازن متنباز در ایران که پکیجهای پایتون را نیز میزبانی میکند. آدرس: https://mirror.shatel.ir/
- ابر آروان (ArvanCloud): آروان نیز مخازن لینوکسی و پایتونی مختلفی را برای دسترسی سریعتر توسعهدهندگان فراهم کرده است. آدرس: https://www.arvancloud.ir/fa/dev/linux-repository
- پارسپک (ParsPack): ارائهدهنده زیرساخت ابری که مخزن اختصاصی خود را برای حل مشکلات تحریم توسعهدهندگان راهاندازی کرده است. آدرس: https://mirror.shatel.ir/
شما میتوانید آدرسهای بالا را در روش موقت (با فلگ –index-url) تست کنید و هرکدام که پینگ و سرعت بهتری روی سرویسدهنده اینترنت شما داشت را با تنظیمات دائمی اعمال کنید.
نمونه عملی نصب سریع پکیج در سرور با میرور
وقتی درحال کانفیگ یک سرور ابری جدید برای پردازش داده یا آموزش مدلهای هوش مصنوعی هستید، احتمالاً اولین نیازی که پیدا میکنید، راهاندازی محیط ژوپیتر (Jupyter) است و در این نقطه است که نیاز به حل مشکل timeout در pip install خودش را نشان میدهد. دانلود دهها مگابایت پکیج و وابستگیهای سنگینِ محیط ژوپیتر با اینترنت معمولی، میتواند یک آزمون اعصاب واقعی باشد!
برای رفع کامل کندی pip install در ایران روی سرورهای اوبونتو، ابتدا باید مطمئن شویم که DNSهای سرور روی آدرسهای معتبر داخلی تنظیم شدهاند (مثلاً 45.159.149.19 و 217.218.155.155). سپس، با استفاده از فلگ –index-url مستقیماً پکیج را از یک مخزن داخلی فراخوانی میکنیم.
براساس مستندات نصب رسمی ژوپیتر، دستور نصب همراه با مخزن جایگزین به این شکل خواهد بود:
pip install -i https://mirror.ferdowsi.cloud/artifactory/api/pypi/pip-virtual/simple jupyterlab
(نکته فنی: اگر نیاز به آپدیت پیشنیازهای سیستمی دارید، ابر فردوسی ریپازیتوریهای داخلی apt را نیز برای اوبونتوهای ۲۰.۰۴ تا ۲۴.۰۴ بهینهسازی کرده است).
اما بیایید واقعبین باشیم؛ رفع تحریم و فیلترینگ pip تازه اول راه است! بعداز نصب ژوپیتر، نوبت به درگیری با درایورهای گرافیک، کانفیگ CUDA، مچ کردن نسخههای پایتون و نصب پکیجهای حجیمی مثل PyTorch میرسد.
اگر هدف شما تمرکز روی کدنویسی، توسعه بازی، یا آموزش مدلهای هوش مصنوعی است، نیازی نیست چرخ را از نو اختراع کنید. بهترین سرور ژوپیتر لب ایران توسط ابر فردوسی، دقیقاً برای حذف همین دردسرها طراحی شده است. بهجای درگیری با ترمینال، یک محیط ابریِ آمادهبهکار در اختیار شما است که ویژگیهای زیر را دارد:
- بازارچه ابری اختصاصی: دانلود، نصب و فعالسازی اتوماتیک پکیجهای موردنیازِ شما تنها با یک کلیک!
- تنوع پردازندههای قدرتمند: از سری RTX برای رندرینگ معمولی، تا سری Tesla (با هستههای Tensor) برای یادگیری عمیق، و حتی سری H (موتور Transformer) برای آموزش مدلهای زبانی غولپیکر (LLMs).
- اقتصادِ مصرفی: دسترسی به قدرتمندترین گرافیکها. مهمتر اینکه میتوانید در ساعات عدم استفاده سرور را خاموش کنید و بدون از بین رفتن اطلاعات، در هزینهها صرفهجویی کنید.
- بکآپ لحظهای: امکان اسنپشاتگیری آنی تا خیالتان از بابت دیتاسِتها و کدهای ارزشمندتان راحت باشد.
- تست آسان: با ۱۰۰ هزارتومان اعتبار رایگان، برای اینکه استرس شروع نداشته باشید.
جمعبندی
توسعه نرمافزار بهخودیِخود چالشهای پیچیدهای دارد؛ منطقی نیست که دانلود یک کتابخانه ساده سد راه پیشرفت پروژه ما شود. در این مقاله دیدیم که با نصب پکیج های پایتون از مخازن جایگزین pip چطور میتوانیم سرعت دانلود را بالا برده و از سد محدودیتهای شبکه عبور کنیم. فرقی ندارد اگر بهدنبال تغییر مخزن pip در ویندوز و لینوکس برای سیستم شخصی خود هستید یا بخواهید با یک mirror داخلی pip سرور ابریتان را بهینه کنید؛ حالا با داشتن لیست مخازن معتبر و آموزش تنظیم میرور پایتون به صورت Global، کنترل کامل ابزارهایتان را در دست دارید.
شما تابهحال بهخاطر تحریم یا قطعی ارتباط، ساعتها درگیر نصب یک پکیج ساده پایتون باشید؟ معمولاً از کدام مخزن داخلی یا چه ترفندی برای دور زدن این مشکل استفاده میکنید؟ نظرات و تجربیات خود را در پایین همین پست با ما به اشتراک بگذارید.
منابع:
packaging.python | pip.pypa | jupyter | stackoverflow
سوالات متداول
تفاوت index-url با extra-index-url در چیست؟
این یکی از رایجترین اشتباهات هنگام تنظیم مخزن است:
index-url: مخزن پیشفرض (PyPI) را کاملاً جایگزین میکند. برای عبور از تحریمها و رفع کندی اینترنت در ایران، باید حتماً از این مورد استفاده کنید تا درخواست شما اصلاً سمت سرورهای مسدودشده نرود.
extra-index-url: یک مخزن جدید را در کنار مخزن اصلی قرار میدهد. یعنی pip اول در سرور اصلی میگردد و اگر پکیج را پیدا نکرد (یا سرور در دسترس نبود)، تازه به سراغ آدرس دوم میرود. این حالت مشکل TimeOut را در ایران حل نمیکند و بیشتر برای اضافه کردن مخازن خصوصی شرکتها کاربرد دارد.
آیا راهی هست که بدون ساخت دستی فایل pip.conf تنظیمات را گلوبال کنیم؟
بله، نیازی نیست حتماً درگیر پیداکردن مسیر فایلها در ویندوز یا لینوکس شوید. خود pip یک دستور داخلی و سریع برای این کار دارد. کافی است مثلا برای مخازن ابر فردوسی در ترمینال خود بنویسید:
pip config set global.index-url https://mirror.ferdowsi.cloud/artifactory/api/pypi/pip-virtual/simple
این دستور بهطور خودکار فایل کانفیگ را در مسیر درست میسازد و آدرس میرور را در آن قرار میدهد.
چطور تنظیمات میرور pip را به حالت پیشفرض برگردانم؟
اگر به هر دلیلی خواستید دوباره از همان مخزن اصلی پایتون استفاده کنید دو راه دارید:
اگر از فایل کانفیگ استفاده کردید: به سادگی فایل pip.conf یا pip.ini را پیدا و حذف کنید (یا خط مربوط به index-url را پاک کنید).
اگر از دستور pip config استفاده کردید: دستور زیر را در ترمینال اجرا کنید تا تنظیمات لغو
شود:
pip config unset global.index-url
آیا میتوانم مخزن pip را فقط برای یک پروژه تغییر دهم؟
بله. گاهی نمیخواهید تنظیمات روی کل سیستم اعمال شود. وقتی یک محیط مجازی (venv) میسازید، کافی است فایل pip.conf (در مک/لینوکس) یا pip.ini (در ویندوز) را دقیقاً داخل پوشه همان محیط مجازی ایجاد کنید. در این حالت، تنظیمات میرور فقط زمانی کار میکند که آن venv خاص فعال (Activate) باشد.
آیا استفاده از میرورهای ایرانی (مانند سرور دانشگاهها یا کلودها) امن است؟
میرورهای معتبر داخلی در واقع یک کپیِ همگامسازیشده (Sync) از سرورهای اصلی PyPI هستند. این سرورها کدهای مخرب به پکیجها تزریق نمیکنند و صرفاً وظیفه کش و توزیع سریعتر فایلها را برعهده دارند. بااینحال، همیشه توصیه میشود از میرورهای شناختهشده و معتبری که در این مقاله معرفی شد استفاده کنید.
چرا با وجود تنظیم میرور ایرانی، باز هم برای نصب برخی پکیجها ارور میگیرم؟
این مشکل معمولاً دو دلیل دارد:
پکیجی که قصد نصب آن را دارید بسیار جدید است و هنوز روی میرور داخلی همگام (Sync) نشده است (معمولاً با مقداری تأخیر حل میشود).
پکیج موردنظر شما نیاز به دانلود فایلهای جانبی از خارج از محیط PyPI دارد (مثلاً دانلود یک باینری خاص از گیتهاب حین نصب). در این حالت خاص، میرور کمکی نمیکند و باید از ابزارهای تغییر IP استفاده کنید.

