وقتی دسترسی به اینترنت جهانی دچار محدودیت میشود، یکی از اولین چیزهایی که برنامهنویسهای پایتون با آن روبهرو میشوند، از کار افتادن نصب پکیجهاست. خیلی از پروژههای پایتون برای اجرا شدن به کتابخانههای بیرونی وابستهاند و اگر نتوانیم این کتابخانهها را با pip دریافت کنیم، عملاً توسعه، نصب و حتی اجرای بسیاری از پروژهها با مشکل روبهرو میشود.
در این شرایط، استفاده از Mirror های PyPI یک راهحل عملی و مؤثر است. دانشپذیران دوره پایتون کادوس نیز از این موضوع مستثنا نبودند و برای نصب پکیجها در دوره آموزشی خود دچار مشکلات فراوانی بودند. این مطلب آماده شده است تا به این دست از عزیزان کمک کند تا در شرایط مشابه بتوانند بدون هیچ مشکلی پکیجهای خارجی خود را نصب کنند. در این مقاله ابتدا توضیح میدهیم pip و PyPI چه هستند، بعد میگوییم چرا نبود دسترسی به آنها مشکلساز میشود، و در نهایت روش استفاده از mirror برای نصب پکیجها را بررسی میکنیم.
pip چیست؟
pip ابزار اصلی مدیریت بستهها در پایتون است. با استفاده از pip میتوانیم کتابخانهها و پکیجهای مختلف را نصب، بهروزرسانی یا حذف کنیم. برای مثال، اگر بخواهید جنگو را نصب کنید، معمولاً از این دستور استفاده میکنید:
pip install django
این ابزار در عمل نقش پل ارتباطی بین محیط پایتون شما و مخزن بستههای پایتون را دارد. یعنی وقتی یک دستور نصب اجرا میکنید، pip به سراغ مخزن بستهها میرود، نسخه مناسب را پیدا میکند و فایلهای لازم را دانلود و نصب میکند.
PyPI چیست؟
PyPI مخفف Python Package Index است؛ یعنی فهرست اصلی بستههای پایتون. این مخزن، محل انتشار رسمی و عمومی هزاران پکیج پایتونی است. بیشتر کتابخانههایی که توسعهدهندگان در پروژههای خود استفاده میکنند، در همین مخزن منتشر میشوند و pip هم به صورت پیشفرض از همین منبع برای نصب بستهها استفاده میکند.
به زبان ساده، اگر pip ابزار نصب باشد، PyPI منبعی است که pip از آن بستهها را دریافت میکند.
نبود دسترسی به pip و PyPI چه مشکلی ایجاد میکند؟
وقتی دسترسی به PyPI یا مسیرهای ارتباطی آن محدود یا قطع شود، pip دیگر نمیتواند بستهها را به درستی دانلود کند. نتیجه این است که:
- نصب پکیجهای جدید با خطا روبهرو میشود
- بهروزرسانی کتابخانهها انجام نمیشود
- راهاندازی پروژههای تازه سخت یا غیرممکن میشود
- نصب وابستگیهای یک پروژه از روی
requirements.txtهم با شکست مواجه میشود
این مشکل مخصوصاً برای دانشپذیران، برنامهنویسهای تازهکار، و حتی تیمهای حرفهای دردسرساز است، چون در بسیاری از پروژهها نصب وابستگیها بخش جدانشدنی فرایند توسعه است.
Mirror چیست؟
Mirror یا آینه، یک نسخه کپیشده از یک مخزن اصلی است که روی یک سرور دیگر قرار میگیرد. در دنیای نرمافزار، mirror ها معمولاً برای این ساخته میشوند که کاربران بتوانند محتوا را از یک مسیر جایگزین دریافت کنند.
در مورد PyPI، یک mirror همان بستههای موجود در مخزن اصلی را بازتاب میدهد و به کاربران اجازه میدهد به جای اتصال مستقیم به مخزن اصلی، از یک منبع جایگزین استفاده کنند. این کار چند مزیت مهم دارد:
- دسترسی سریعتر
- کاهش وابستگی به مسیرهای خارجی
- امکان نصب پکیجها در شرایط محدودیت اینترنت
- گاهی سرعت بهتر به دلیل نزدیکتر بودن سرور
چرا استفاده از Mirror در زمان محدودیت اینترنت مفید است؟
وقتی اینترنت بینالمللی یا دسترسی مستقیم به مخازن اصلی محدود میشود، mirror ها میتوانند بهعنوان مسیر جایگزین عمل کنند. در این حالت، pip به جای اینکه بستهها را از PyPI اصلی بگیرد، آنها را از mirror دریافت میکند.
به این ترتیب، حتی اگر دسترسی مستقیم به مخزن اصلی وجود نداشته باشد، باز هم میتوان بسیاری از پکیجهای پایتون را نصب کرد.
نصب پکیج با Mirror در رانفلر
اگر نمیخواهید mirror را به صورت سراسری روی سیستم تنظیم کنید، میتوانید فقط برای همان نصب از آن استفاده کنید. در این روش، در هنگام نصب پکیج، آدرس mirror را با گزینه -i مشخص میکنید.
برای نمونه، نصب جنگو با mirror رانفلر به این شکل انجام میشود:
pip install -i https://mirror-pypi.runflare.com/simple django
در این دستور، pip به جای مخزن اصلی، از mirror رانفلر استفاده میکند و بسته جنگو را از همانجا دریافت میکند.
تنظیم Mirror به صورت Global در لینوکس، مک و ویندوز
اگر بخواهید هر بار مجبور نباشید آدرس mirror را در دستور نصب بنویسید، میتوانید تنظیمات pip را به صورت global انجام دهید. در این صورت، از آن به بعد هر دستور pip install به صورت پیشفرض از همان mirror استفاده میکند.
در لینوکس، مک یا CMD ویندوز میتوانید این دستورات را اجرا کنید:
pip config –user set global.index https://mirror-pypi.runflare.com/simple
pip config –user set global.index-url https://mirror-pypi.runflare.com/simple
pip config –user set global.trusted-host mirror-pypi.runflare.com
pip config –user set global.timeout 60
بعد از اجرای این دستورات، کافی است مثل همیشه بنویسید:
pip install packageName
از این به بعد pip تلاش میکند بستهها را از مخزن mirror رانفلر داخل کشور دریافت کند.
چند نکته مهم هنگام استفاده از mirror
برای استفاده بهتر از mirror ها، چند نکته را در نظر داشته باشید:
اول اینکه همیشه بررسی کنید mirror مورد نظر فعال و در دسترس باشد.
دوم اینکه بعضی بستهها ممکن است با تأخیر نسبت به مخزن اصلی در mirror قرار بگیرند.
سوم اینکه اگر پروژهای حساس یا تولیدی دارید، بهتر است روش نصب وابستگیها را از قبل تست کنید تا در زمان استقرار با خطا روبهرو نشوید.
جمعبندی
در زمانهایی که دسترسی به اینترنت جهانی محدود میشود، نصب پکیجهای پایتون میتواند به یک چالش جدی تبدیل شود. در چنین شرایطی، pip همچنان ابزار اصلی مدیریت بستههاست، PyPI منبع اصلی پکیجها محسوب میشود، و Mirror ها مسیر جایگزین برای دسترسی به همان بستهها هستند.
اگر بخواهید فقط یکبار از mirror استفاده کنید، میتوانید آدرس آن را در خود دستور pip install وارد کنید. اما اگر میخواهید همیشه از mirror استفاده شود، کافی است تنظیمات را به صورت global روی سیستم اعمال کنید. در این صورت، حتی در شرایط محدودیت اینترنت هم میتوانید بسیاری از پکیجهای پایتون را بهراحتی دریافت و نصب کنید.
یادگیری زبان برنامهنویسی پایتون در رشت
اگر شما هم به ورود به دنیای برنامهنویسی علاقه دارید و دوست دارید که به جمع دانشپذیران رشته پایتون آموزشگاه برنامهنویسی کادوس رشت بپیوندید کافیست که همین الان با ما تماس بگیرید. توجه بفرمایید که در مؤسسه کادوس در تمامی مراحل، کلیه مشاورهها رایگان انجام میشود.
