در اکوسیستم پایتون، مدیریت کتابخانهها و وابستگیها (dependencies) نقش کلیدی در توسعه نرمافزار دارد. ابزار pip به عنوان ابزار مدیریت بسته (Package Manager) رسمی پایتون، سادهترین و رایجترین راه برای نصب، حذف و مدیریت کتابخانههاست. اما استفاده از pip بدون اینترنت مانند شرایط قطعی اینترنت، محدودیت دسترسی یا محیطهای ایزوله، به شکل معمول ممکن نیست. در این نوشته، به صورت فنی و مرحله به مرحله بررسی میکنیم که pip چیست و چگونه میتوان در شرایط بدون اینترنت همچنان از آن استفاده کرد.
فهرست مطالب:
pip چیست؟
کلمه pip مخفف Pip Installs Packages است و بهطور پیشفرض همراه پایتون نصب میشود. این ابزار امکان دریافت و نصب پکیجها را از مخزن رسمی پایتون یعنی PyPI (Python Package Index) فراهم میکند.
نصب پکیجها و وابستگیها، حذف یا آپدیت کتابخانهها، نصب یک نسخه مشخص از یک پکیج، مدیریت دسته جمعی وابستگیها با استفاده از requirements.txt شاید از مهمترین کاربردهای ابزار pip در پایتون باشد.
به صورت کلی، ابزار pip با یک خط دستور ساده مشابه زیر، اقدام به دانلود و نصب پکیج دلخواه کاربر (مثلاً numpy) میکند:
pip install numpy
pip بدون اینترنت برای چه زمانی است؟
اما در برخی مواقع مانند قطعی اخیر اینترنت که در پی کشتار بیرحمانه هموطنان عزیزمان در روزهای 18 و 19 دی ماه 1404 رخ داد، دسترسی به سرورهای pip برای برنامهنویسان داخل کشور عملاً غیرممکن میشود و توسعه پروژههای پایتونی یا آپدیت نرمافزاری آنها، امکانپذیر نخواهد بود.
البته علاوه بر چنین حالتی، سناریوهای دیگری نیز ممکن است رخ دهد که توسعهدهنده به اینترنت پایدار دسترسی نداشته باشد یا به دلایل امنیتی در یک شرکت یا سازمان، اجازه اتصال به اینترنت وجود نداشته باشد.
در چنین شرایطی، میتوان از منابع محلی و یا نسخه آفلاین پکیجها استفاده کرد که در ادامه به آن میپردازیم.
دانلود پکیجها از منابع محلی
در مواقعی که به دلیل فیلترینگ یا قطعی اینترنت بینالملل، دسترسی به سرورهای pip مختل شده است، میتوان از مخازن جایگزین pip که داخل کشور میزبانی میشوند (مانند مخزن runflare.com)، استفاده کرد. برای این کار، کافیست از الگوی دستوری زیر به جای دستور اصلی استفاده کنید:
pip install -i https://mirror-pypi.runflare.com/simple/ numpy
سوییج i یا index-url برای pip مشخص میکند که فهرست پکیجها را باید از چه آدرسی فراخوانی کند.
در صورتی که حین اجرای دستور بالا با خطای نامعتبر بودن مجوز سرور مواجه شدید؛ میتوانید با استفاده از سوییچ trusted-host میتوانید این مخزن را به عنوان هاست معتبر به pip معرفی کنید:
pip install --trusted-host https://mirror-pypi.runflare.com -i https://mirror-pypi.runflare.com/simple/ numpy
بهروزرسانی: به جز مخزن runflare.com میتوانید از مخزنی که لیارا برای بهروزرسانی pip تهیه کرده است نیز استفاده کنید. آدرس این مخزن را میتوانید یا به صورت سوییچ i که در بالا گفته شد به pip معرفی کنید:
pip install -i https://package-mirror.liara.ir/repository/pypi/ numpy
یا به صورت دائمی برای pip تعریف کنید:
# for linux:
export PIP_INDEX_URL=https://package-mirror.liara.ir/repository/pypi/simple
#for windows:
setx PIP_INDEX_URL "https://package-mirror.liara.ir/repository/pypi/simple"
با این کار دیگر نیاز نیست هر بار داخل دستور pip از سوییچ i استفاده کنید.
استفاده از پکیجهای آفلاین
در مواقعی که به دلایل امنیتی یا محدودیتهای دیگر، کلاً بر روی سیستم خود اتصال اینترنت ندارید و سیستم شما به عبارتی آفلاین است، میتوانید با استفاده از یک کامپیوتر دیگر اقدام به دانلود پکیجهای مدنظر نموده و آنها را به سیستمی که آفلاین است منتقل کنید.
مرحله 1: دانلود پکیجها در سیستم آنلاین
ابتدا روی کامپیوتری که اتصال به اینترنت دارد، دستور زیر را وارد کنید تا pip پکیج مدنظر را فقط دانلود کند:
pip download numpy
با اجرای این دستور، تمام فایلهای موردنیاز (بههمراه وابستگیها) در همان پوشه ذخیره میشوند.
مرحله 2: انتقال فایل پکیجها به سیستم آفلاین
فایلهای دانلود شده (معمولاً با پسوند whl. یا tar.gz.) را از طریق فلش یا هارد و یا شبکه داخلی به کامپیوتری که آفلاین است منتقل کنید.
مرحله 3: نصب پکیجها در سیستم آفلاین
پکیجها را در کامپیوتری که به اینترنت دسترسی ندارد، با استفاده از دستور زیر نصب کنید:
pip install --no-index --find-links=./packages numpy
در این دستور، سوییچ no-index از pip میخواهد که به مخزن اصلی PyPI متصل نشود. سوییچ find-links هم مشخص میکند pip در چه پوشهای باید دنبال فایل پکیجها بگردد. در این مثال، فرض شده است که فایلهای مرحله 1 را درون پوشهای به اسم packages داخل پوشه جاری قرار دادهایم.
نکات تکمیلی
1- در صورتی که پروژه شما فایل requirements.txt دارد، میتوانید همه پکیجها را به صورت یکجا با دستور زیر دانلود کنید:
pip download -r requirements.txt
2- هنگام استفاده از هر کدام از روشهای بالا حتماً به نسخه پایتون نصب شده روی سیستم مبدأ و مقصد دقت کنید.
3- در روش آفلاین، استفاده از فایلهای whl. چون سریعتر (بدون نیاز به build) هستند، توصیه میشود.
4- در هر کدام از روشهای بالا، برخی وابستگیهای سیستمی مانند gcc یا libssl ممکن است نیاز باشد که میبایست جداگانه دانلود و نصب کنید.
چنانچه برنامهنویس پایتون هستید، میتوانید از سایر مطالب سایت که مرتبط با زبان برنامهنویسی پایتون هستند نیز بازدید نمایید.
خیر ببینی کارمو راه انداختی دمت گرم
خواهش میکنم. خوشحالم مفید بوده براتون.
وجود انسانهای شریفی چون شما مایه دلگرمی است. پایدار باشید
سلامت باشید محمد عزیز
خیلی خوب بود فقط من نمیتونم ماژول win10toast رو نصب کنم. امیدوارم شاد باشید. ضمنا برای *.github.io و githubusercontent هم یه فکری بردارید دیگه یادم میره نت قطع بوده.
خواهش میکنم، سلامت باشید. متاسفانه هنوز راهحلی برای اون دو تا دامین ندیدم ولی اگر چیزی پیدا کردم حتماً اطلاع میدم.