توی کل جهان وقتی که میخواهید یه پکیج پایتونی رو نصب کنید خیلی ساده با دستور pip install name پکیج مورد نظر خودتونو نصب میکنید
ما توی این جای عجیب که گاهی از زندگی عادی هم محرومیم همیشه نمیتونیم به سادگی این کارو کنیم و با تحریم و فیلتر و... روبرو میشیم و گاها مجبوریم از ابزار های رفع تحریم و فیلتر استفاده کنیم
البته.... قبل از اینکه حتی اینم ازمون بگیرن.
با قطع دسترسی به اینترنت بین الملی، دسترسی به pypi(Python Package Index) هم از بین میره و حتی از نصب یه پکیج ساده پایتونی از محروم میشیم، پایتون محبوب ترین زبان برنامه جهان در حل حاظره و بیشترین تعداد توسعه دهنده در جهان و ایران رو داره؛ این یعنی با دسترسی نداشتن به pypi امکان آموزش و یادگیری فریم ورک های پایتونی، توسعه اپلیکیشن های پایتونی و بک اند های پایتونی و حتی توسعه شبکه ملی اطلاعات هم در زمان اینترنت ملی از بین میره یا با چالش جدی روبرو میشه؛ اما چاره چیه؟
توی پست قبلی چندین میرور و هوش مصنوعی و... معرفی کردم که بتونید توی زمان اینترنت ملی همچنان به داده هایی که بهشون نیاز دارید دسترسی داشته باشید؛ توی این فرسته میخام استفاده از این میرور ها برای نصب پکیج های پایتونی رو بهتون آموزش بدم
آینهها یا همون میرورها، در واقع یه کپی کامل از یه مخزن هستن که روی یه میزبان دیگه نگهداری میشن. یعنی ما میتونیم کل پکیجهای موجود در پای پی (PyPI) یا هر مخزن دیگه ای رو روی سرور یا فضای محلی خودمون دانلود و ذخیره کنیم تا هر وقت لازم داشتیم، مستقیم از همونجا پکیجهامون رو نصب کنیم.
برای ساخت میرور های پایتونی از ابزاری به اسم Bandersnatch استفاده میشه که بهمون اجازه میده کل پکیج های داخل مخزن رو به فضای لوکال یا سرور خودمون بیاریم و بتونیم بروز نگهشون داریم به صورت دوره ای؛ اما خوب ما که همچنان به اینترنت آزاد دسترسی نداریم که بتونیم این کارو کنیم و همچنین حجم کل پکیج ها به ترابایت ها میرسه و حتی اگر دسترسی به اینترنت آزاد داشته باشیم هم برای یک توسعه دهنده ساده راه منطقی ای به نظر نمیرسه
اما خوشبخاته(شاید!؟) میرور هایی وجود که از قبل توسط سرویس های هاستینگ و... روی دیتاسنتر های داخلی ساخته شده و ما میتونیم توی زمان قطعی اینترنت از اون ها برای نصب پکیج های پایتونی خودمون استفاده کنیم
اگر بخواهید فقط یک پکیج رو با استفاده از میرور خاصی نصب کنید کافیه اون رو با فلگ -i به pip بدید تا بجای مخزن رسمی از میرور شما استفاده کنه
pip install -i https://mirror-pypi.runflare.com/simple django
اینجا از مخزنی که توسط رانفلر ارئه شده استفاده کردیم و جنگو رو با اینترنت ملی نصب کردیم
اگر میخواهید به صورت گلوبال میرور هارو ست کنید تا نیاز نباشه توی هر نصب میرور رو بدید کافیه میرور هارو توی کانفیگ گلوبال pip ست کنید و این کار با دستور زیر قابل انجامه
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 به صورت گلوبال برای یوزر خودمون ست کردیم و دیگه نیازی نیست توی هر دستور با فلگ -i ایندکس خودمونو بدیم
برای چک کردن درست ست شدن کافیه دستور زیر رو اجرا کنید
pip config list
حالا کافیه به صورت عادی پکیج خودتونو نصب کنید
pip install django
چندین میرور مختلف برای استفاده وجود داره که میتونید استفاده کنید
https://mirror-pypi.runflare.com/simple : مخزن رانفلر که سرعت خوبی داره و بیشتر پکیج های معروف رو داره و من هرچی خواستم داشت
https://archive.ito.gov.ir/python : مخزن پایتون ارائه شده توسط سازمان فناوری اطلاعات ایران و پکیج های جدیدتر رو نداره
https://pypi.jamko.ir/simple : مخزن پایتونی که اینم توسط سازمان فناوری اطلاعات ایران نگهداری میشه و پکیج های کمتری داره
میرور های مختلف برای مخزن های دیگه رو توی پست قبلی میتونید پیدا کنید
اگر توی نصب پکیج هایی که وابستگی زیاد دارن به مشکل خوردید میتونید وابستگی هاشو جدا نصب کنید؛ مثل مشکلی که برای من موقع نصب flask پیش اومد

اگر با همچنین مشکلی برخوردید کافیه پکیجی که خطا میده رو جدا نصب کنید:
pip install markupsafe
بعدش پکیج اصلی که قصد نصبش رو داشتید نصب کنید:
pip install flask
از اونجایی که توی جای عجیبی زندگی میکنیم که حتی ممکنه گاهی به همین شبکه داخلی هم دسترسی نداشته باشیم یا با اختلال و قطعی و... روبرو بشیم؛ شاید بهتر باشه پکیج هایی که روزانه باهاشون سر و کار دارید رو دانلود کنید و توی هارد خودتون یا فلش و... ذخیره کنید که حتی توی نبود اینترنت هم بتونید اون هارو نصب کنید و استفاده کنید
برای دانلود یه پکیج پایتون روی فضای لوکال خودتون کافیه از دستور زیر استفاده کنید:
pip download httpx -d packages
با این دستور پکیج httpx رو توی پوشه packages(که خودکار در پوشه کاری فعلیتون ساخته میشه) دانلود میکنید و در آینده میتونید با دستور زیر از همون پوشه دوباره نصبش کنید
pip install --no-index --find-links=packages httpx
همچنین میتونید این دستورات رو با فلگ -r هم استفاده کنید و نیازی به دانلود دونه دونه نباشه و همه پکیج هارو از فایل requirements.txt دانلود و دوباره نصب کنید:
pip download -r requirements.txt -d packages pip install --no-index --find-links=packages -r requirements.txt
اگر میخواهید کل پکیج هایی که در حال حاظر نصب دارید رو دانلود کنید کافیه دستور زیر رو اجرا کنید:
pip freeze > requirements.txt pip download -r requirements.txt -d packages
با این کار حتی اگر اینترنت کاملا هم قطع بشه شما با داشتن این پوشه میتونید همچنان پکیج های خودتونو همچنان نصب کنید.
امیدوارم که این فرسته براتون مفید بوده باشه و همچنان اگر برخی بزارن به توسعه و یادگیری روزانتون ادامه بدید؛ همچنین توصیه میکنم حتما وقتی که به اینترنت عادی دسترسی داشتید برای خودتون از هر چیزی که براتون مهمه آرشیو جمع آوری کنید و امیدوارم هیچوقت نیاز به استفاده ازش نداشته باشید.