چند روز به عقب من به عنوان مهندس ارشد نرم افزار در بخش IT یک بانک کار کردم. این اولین تجربه با محدودیت قابل توجهی در اتصال به اینترنت برای ایستگاه کاری من و سرورهایی است که قرار است برنامه های پایتون توسعه یافته را مستقر کنیم.
اتصال به اینترنت به هیچ وجه برای سرورها و اتصال به اینترنت محدود برای ایستگاه های کاری وجود ندارد. ما فقط می توانیم فایلها را از اینترنت بارگیری کنیم اما این کار از طریق اسکن امنیتی قبل از اینکه به ما اجازه بارگیری پرونده را بدهد ، می رود. در این شرایط ما نمی توانیم از Python Default Package Manager "PIP" استفاده کنیم تا بسته ها را از PYPI (شاخص بسته Python) به طور مستقیم دریافت کرده و آنها را در محیط های پایتون نصب کنیم.
راه حل به طور خلاصه
به عنوان راه حل ، بسته بندی مورد نیاز Python و وابستگی های آن را از PYPI بارگیری کردیم و آنها را در یک مکان پوشه محلی قرار دادیم و آنها را با استفاده از "پیپ" با آموزش "پیپ" نصب کردیم تا به جای PYPI به دنبال بسته های موجود در مکان پوشه محلی باشند.
مقدمه
بیایید ببینیم که چگونه ما با جزئیات بیشتری به این هدف می رسیم. در اینجا من سعی خواهم کرد که مواردی را به سادگی ممکن ارائه دهم اما به اندازه کافی جامع برای درک فلسفه در پشت مدیریت بسته Python ، به گونه ای که بتوانید با حداقل تعداد جستجوهای Google ، هر مسئله ای را حل کنید.😁😉
"پیپ" در واقع در پشت صحنه چه کاری انجام می دهد؟
اگر تازه وارد پایتون هستید و برای پیگیری و درک پیپ و مفاهیم مرتبط به آن نیاز دارید ، لطفاً [https://realpython. com/what-is-pip/] را دنبال کنید.
هنگامی که ما Pip Install Looks را در PYPI برای بسته بندی اجرا می کنیم و آن را بارگیری می کنیم و سپس از طریق "needes. txt" می گذرانیم (من 100 ٪ در این مورد مطمئن نیستم ، اما این نزدیکترین حدس است) و وابستگی ها و بارگیری ها را کشف کنیدآنها همPIP این کار را به صورت بازگشتی انجام دهید تا زمانی که تمام وابستگی های لازم را بارگیری کند.
اگر بعد از اجرای دستور نصب PIP ، گزارش ها را با دقت مشاهده می کنید ، می توانید این موضوع را مشاهده کنید.
پس از بارگیری تمام وابستگی ها ، پیپ آنها را در محیط پایتون نصب می کند و کارهای خانه داری دیگری را نیز انجام می دهد. پس از نصب بسته و وابستگی های آن ، می توانیم از آن بسته در برنامه Python خود استفاده کنیم که در برابر محیط خاص پایتون اجرا می شود.
در اینجا من همچنان می گویم "محیط پایتون". من به مفهوم محیط زیست مجازی پایتون اشاره می کنم. اگر یک Pythonista جدید هستید ، ابتدا [https://realpython. com/python-virtual-enviversments-a-primer/] را دنبال کنید تا مفهوم محیط مجازی را درک کنید.
چگونه می توانیم بسته PYPI را بدون اینترنت نصب کنیم؟
اکنون می دانیم که PIP چگونه کار می کند. بیایید ببینیم که چگونه می توانیم به PIP دستور دهیم که به جای آن در PYPI جستجو نکنند تا به جای آن در یک مکان پوشه محلی خاص جستجو کنند.
هنگامی که ما PIP را مانند بالا اجرا می کنیم ، از جستجو در PYPI جلوگیری می کند (به دلیل گزینه بدون شاخص) و در عوض سعی می کنیم بسته و وابستگی های آن را از محل پوشه Find-Links پیدا و نصب کنیم.
برای اینکه PIP بتواند بسته را با موفقیت نصب کند ، مکان Links Links نیاز به بسته بندی ، وابستگی های آن و وابستگی های وابستگی دارد. بیایید ببینیم که چگونه می توانیم از این نیاز تأمین کنیم.
چگونه می توان یک بسته PYPI و وابستگی های آن را در یک مکان پوشه محلی قرار داد؟
سعی می کنم این مرحله را با یک مثال توضیح دهم. بیایید بگوییم که می خواهیم بسته پایتون "ExchangeLib" را نصب کنیم و دستور ما مانند موارد زیر خواهد بود.
ابتدا رایانه ای را با اینترنت پیدا کنید و به وب سایت PYPI (https://pypi. org/) بروید و "مبادله" را جستجو کنید. سپس می توانید به صفحه زیر بروید.
از اینجا ، روی پیوند "بارگیری پرونده ها" کلیک کنید. این شما را به صفحه زیر می رساند.
در اینجا می توانید دو پرونده را مشاهده کنید که قابل بارگیری هستند. یکی فایل چرخ پایتون و دیگری یک تاربال (هر دو پرونده زیپ هستند). در اینجا تاربال منبع است و چرخ توزیع بسته برای نصب سریعتر و پایدار است. PIP می تواند از هر یک از آنها برای نصب بسته استفاده کند. در حضور هر دو ، چرخ مقدم را دریافت می کند و PIP بسته را از چرخ نصب می کند.
در برخی از بسته ها (به عنوان مثال Numpy) می توانید بیش از یک پرونده را در اینجا مشاهده کنید. بعداً به آن خواهیم رسید. با این حال ، در همه موارد شما Tarball و Zero ، یک یا بسیاری از پرونده های چرخ را مشاهده خواهید کرد.
پرونده چرخ را بارگیری کرده و آن را در "محلی محلی" قرار دهید. در صورت یافتن هیچ چرخ ، منبع (تاربال) را بارگیری کنید.
اگر می خواهید وابستگی ها را بفهمید ، باید پرونده منبع (Tarball) را نیز بارگیری کنید.
چگونه وابستگی ها را بفهمیم؟
از طریق need. txt
منبع بارگیری شده (Tarball) را با استفاده از یک بازکن فایل ZIP (به عنوان مثال Winzip) باز کنید و به جستجوی "needes. txt" بپردازید. اگر یافت نشد ، سعی کنید "مورد نیاز. txt" را جستجو کنید. در آنجا می توانید وابستگی های بسته را پیدا کنید.
به طور مشابه پرونده های چرخ آن وابستگی ها را بارگیری کرده و آن را در "محلی محلی" قرار دهید. در اینجا بارگیری فقط چرخ کافی است. با این حال ، اگر می خواهید می توانید هر دو (یا تمام پرونده های ذکر شده) را بارگیری کنید و آن را در "محلی محلی" قرار دهید و پیپ به اندازه کافی هوشمند است که مناسب ترین چرخ را پیدا کند (اگر منبع مربوطه (تاربال) وجود نداشته باشد.
با آزمایش و خطا
به طور مشابه می توانیم ابتدا چرخ یا منبع (تاربال) را بارگیری کنیم و آن را در "محلی-با-تشکیل دهنده" قرار دهیم و نصب PIP را اجرا کنیم. سپس با یک خطای وابستگی شکست خواهد خورد. سپس می توانید پیش بروید و چرخ آن وابستگی خاص را بارگیری کنید و دوباره نصب PIP را اجرا کنید.
به همین ترتیب شما می توانید این کار را چندین بار انجام دهید تا همه وابستگی ها راضی شوند. پس از رضایت همه وابستگی ها ، پیپ با موفقیت بسته را نصب می کند.
این کمی دست و پا گیر است و من پیشنهاد می کنم ابتدا وابستگی را در "needes. txt" بدست آورید و سپس با آزمایش و خطا به جلو بروید.
وقتی بیش از یک پرونده چرخ وجود دارد باید چه کاری انجام دهید؟
هنگامی که سعی می کنید پرونده چرخ را برای یک بسته خاص PYPI دریافت کنید ، گاهی اوقات می بینید که بیش از یک پرونده چرخ در زیر "پرونده های بارگیری" موجود است.
چرا برخی از بسته های PYPI بیش از یک پرونده چرخ دارند؟
دلیل این امر این است که بسته خاص حاوی کد وابسته به معماری و/یا کد وابسته به نسخه پایتون است.
کد وابسته به معماری به معنای اینجا ، برخی از بسته های پایتون می توانند ماژول های C/C ++ داشته باشند تا بتوانند عملکرد محاسباتی بالاتری را ارائه دهند. بسته "numpy" مثال خوبی است.
بر خلاف پایتون ، C/C ++ یک زبان کامپایل شده است و کد بایت گردآوری شده وابسته به معماری رایانه است. به عبارت دیگر ، ماژول های C/C ++ باید برای معماری های مختلف (Linux 32bit ، Linux 64bit ، Windows 32bit ، Windows 64bit ، MacOS و غیره) در سیستم عامل های مربوطه گردآوری شوند.
دلیل دیگر این است که بسته به نسخه پایتون ممکن است تفاوت هایی در اجرای وجود داشته باشد. به همین دلیل همچنین می تواند بیش از یک پرونده چرخ وجود داشته باشد.
چگونه چرخ صحیح را در بین آنها انتخاب کنیم؟
ابتدا به نسخه Python نگاه کنید و منطقه ای را که می توانید چرخ هایی را که با نسخه Python خود کار می کند ، پیدا کنید.
سپس به نام پرونده توجه کنید. در آنجا می توانید مشخص کنید که آیا چرخ برای لینوکس (Manylinux) ، پنجره (WIN) یا MACOS (MACOSX) در نظر گرفته شده است.
سرانجام معماری که چرخ در نظر گرفته شده است.
- ویندوز: Win32 (32bit) ، Win_amd64 (64bit)
- Linux: Manylinux1_i686 (32bit) ، manylinux1_x86_64 (64bit)
- MACOS: MACOSX_10_9_X86_64 (64bit)
اکنون باید بتوانید فایل چرخ مناسب را برای سرور یا ایستگاه کاری خود به طور منحصر به فرد شناسایی کنید.
نتیجه
استفاده از یک مدیر بسته برای نصب و حفظ وابستگی های یک محیط خاص ، نه به دلیل ضروری بودن بلکه به دلیل سهولت در آن ، اجتناب ناپذیر است. اما وقتی صحبت از محیط های محدود کننده می شود ، توانایی مدیر بسته در جستجوی فهرست بسته (PYPI در مورد ما) نیز محدود است. در این وبلاگ بررسی کردیم که چگونه می توانیم بر این غلبه کنیم.
اگر از برخی از مدیر بسته های دیگر استفاده می کنید نترسید. این ایده هنوز هم یکسان است. احتمالاً کاری که شما باید انجام دهید این است که از دستور معادل نصب پیپ-No-Index--find-links = پیدا کنید. اگر طرفدار برخی از مدیر بسته های دیگر هستید ، و اگر اتفاق می افتد با یک نوشتار مشابه روبرو شده اید ، لطفاً پاسخی را در اینجا بگذارید.