در اکوسیستم پایتون، مدیریت کتابخانهها و وابستگیها (dependencies) نقش کلیدی در توسعه نرمافزار دارد. ابزار pip به عنوان ابزار مدیریت بسته (Package Manager) رسمی پایتون، سادهترین و رایجترین راه برای نصب، حذف و مدیریت کتابخانههاست. اما استفاده از pip بدون اینترنت مانند شرایط قطعی اینترنت، محدودیت دسترسی یا محیطهای ایزوله، به شکل معمول ممکن نیست. در این نوشته، به صورت فنی و مرحله به مرحله بررسی میکنیم که pip چیست و چگونه میتوان در شرایط بدون اینترنت همچنان از آن استفاده کرد.
فهرست مطالب:
pip چیست؟
کلمه pip مخفف Pip Installs Packages است و بهطور پیشفرض همراه پایتون نصب میشود. این ابزار امکان دریافت و نصب پکیجها را از مخزن رسمی پایتون یعنی PyPI (Python Package Index) فراهم میکند.
نصب پکیجها و وابستگیها، حذف یا آپدیت کتابخانهها، نصب یک نسخه مشخص از یک پکیج، مدیریت دسته جمعی وابستگیها با استفاده از requirements.txt شاید از مهمترین کاربردهای ابزار pip در پایتون باشد.
به صورت کلی، ابزار pip با یک خط دستور ساده مشابه زیر، اقدام به دانلود و نصب پکیج دلخواه کاربر (مثلاً numpy) میکند:
pip install numpy
pip بدون اینترنت برای چه زمانی است؟
اما در برخی مواقع مانند قطعی اخیر اینترنت که در پی کشتار بیرحمانه هموطنان عزیزمان در روزهای ۱۸ و ۱۹ دی ماه ۱۴۰۴ رخ داد، دسترسی به سرورهای 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
استفاده از پکیجهای آفلاین
در مواقعی که به دلایل امنیتی یا محدودیتهای دیگر، کلاً بر روی سیستم خود اتصال اینترنت ندارید و سیستم شما به عبارتی آفلاین است، میتوانید با استفاده از یک کامپیوتر دیگر اقدام به دانلود پکیجهای مدنظر نموده و آنها را به سیستمی که آفلاین است منتقل کنید.
مرحله ۱: دانلود پکیجها در سیستم آنلاین
ابتدا روی کامپیوتری که اتصال به اینترنت دارد، دستور زیر را وارد کنید تا pip پکیج مدنظر را فقط دانلود کند:
pip download numpy
با اجرای این دستور، تمام فایلهای موردنیاز (بههمراه وابستگیها) در همان پوشه ذخیره میشوند.
مرحله ۲: انتقال فایل پکیجها به سیستم آفلاین
فایلهای دانلود شده (معمولاً با پسوند whl. یا tar.gz.) را از طریق فلش یا هارد و یا شبکه داخلی به کامپیوتری که آفلاین است منتقل کنید.
مرحله ۳: نصب پکیجها در سیستم آفلاین
پکیجها را در کامپیوتری که به اینترنت دسترسی ندارد، با استفاده از دستور زیر نصب کنید:
pip install --no-index --find-links=./packages numpy
در این دستور، سوییچ no-index از pip میخواهد که به مخزن اصلی PyPI متصل نشود. سوییچ find-links هم مشخص میکند pip در چه پوشهای باید دنبال فایل پکیجها بگردد. در این مثال، فرض شده است که فایلهای مرحله ۱ را درون پوشهای به اسم packages داخل پوشه جاری قرار دادهایم.
نکات تکمیلی
۱- در صورتی که پروژه شما فایل requirements.txt دارد، میتوانید همه پکیجها را به صورت یکجا با دستور زیر دانلود کنید:
pip download -r requirements.txt
۲- هنگام استفاده از هر کدام از روشهای بالا حتماً به نسخه پایتون نصب شده روی سیستم مبدأ و مقصد دقت کنید.
۳- در روش آفلاین، استفاده از فایلهای whl. چون سریعتر (بدون نیاز به build) هستند، توصیه میشود.
۴- در هر کدام از روشهای بالا، برخی وابستگیهای سیستمی مانند gcc یا libssl ممکن است نیاز باشد که میبایست جداگانه دانلود و نصب کنید.