راهنمای کاربر#

ساخت وبلاگ

PIP یک برنامه خط فرمان است. هنگام نصب PIP ، یک دستور PIP به سیستم شما اضافه می شود ، که می تواند از طریق فرمان به شرح زیر اجرا شود:

Pytho n-m PIP با استفاده از مفسر پایتون که شما به عنوان پایتون مشخص کرده اید ، پیپ را اجرا می کند. SO /usr/bin/python3. 7-m PIP به این معنی است که شما در حال اجرای PIP برای مترجم خود واقع در /usr/bin/python3. 7 هستید.

P Y-M PIP با استفاده از آخرین مترجم Python که نصب کرده اید PIP را اجرا می کند. برای اطلاعات بیشتر ، اسناد پرتاب پایتون ویندوز را بخوانید.

نصب بسته ها#

PIP از نصب از PYPI ، کنترل نسخه ، پروژه های محلی و مستقیماً از پرونده های توزیع پشتیبانی می کند.

متداول ترین سناریو نصب از PYPI با استفاده از مشخصات مورد نیاز است

برای اطلاعات بیشتر و مثال ، به مرجع نصب PIP مراجعه کنید.

اعتبارنامه اصلی احراز هویت

این اکنون در تأیید اعتبار پوشانده شده است.

این اکنون در تأیید اعتبار پوشانده شده است.

این اکنون در تأیید اعتبار پوشانده شده است.

با استفاده از سرور پروکسی#

هنگام نصب بسته های PYPI ، PIP به دسترسی به اینترنت نیاز دارد ، که در بسیاری از محیط های شرکت به سرور پروکسی HTTP برون مرزی نیاز دارد.

PIP را می توان پیکربندی کرد تا از طریق یک سرور پروکسی به روش های مختلف متصل شود:

با استفاده از گزینه خط فرمان-proxy برای مشخص کردن پروکسی در طرح فرم: // [کاربر: passwd@] proxy. server: درگاه

با تنظیم متغیرهای استاندارد-متغیرهای http_proxy ، https_proxy و no_proxy.

با استفاده از متغیر محیط PIP_USER_AGENT_USER_DATA برای شامل یک رشته رمزگذاری شده JSON در متغیر کاربر-عامل که در درخواست های PIP استفاده می شود.

پرونده های مورد نیاز#

"پرونده های مورد نیاز" پرونده هایی هستند که حاوی لیستی از مواردی هستند که باید با استفاده از PIP نصب مانند SO نصب شوند:

جزئیات مربوط به قالب پرونده ها در اینجا آمده است: قالب پرونده مورد نیاز.

از نظر منطقی ، یک پرونده مورد نیاز فقط لیستی از آرگومان های نصب PIP است که در یک پرونده قرار می گیرد. توجه داشته باشید که شما نباید به موارد موجود در پرونده نصب شده توسط PIP به هر ترتیب خاص اعتماد کنید.

در عمل ، 4 استفاده مشترک از پرونده های مورد نیاز وجود دارد:

پرونده های مورد نیاز برای حفظ نتیجه از PIP Freeze به منظور دستیابی به نصب های قابل تکرار استفاده می شود. در این حالت ، پرونده مورد نیاز شما حاوی یک نسخه پین شده از همه چیزهایی است که هنگام اجرای PIP Freeze نصب شده است.

Requirements files are used to force pip to properly resolve dependencies. pip 20.2 and earlier doesn’t have true dependency resolution, but instead simply uses the first specification it finds for a project. E.g. if pkg1 requires pkg3>=1.0 and pkg2 requires pkg3>=1.0,=1.0 , and could easily end up installing a version of pkg3 that conflicts with the needs of pkg2 . To solve this problem, you can place pkg3>= 1. 0 ،

پرونده های مورد نیاز برای مجبور کردن PIP برای نصب نسخه متناوب از یک وابستگی فرعی استفاده می شود. به عنوان مثال ، فرض کنید Projecta در پرونده مورد نیاز شما به ProjectB نیاز دارد ، اما آخرین نسخه (v1. 3) دارای یک اشکال است ، می توانید پیپ را مجبور کنید نسخه های قبلی را مانند آن بپذیرید:

فایل های مورد نیاز برای لغو یک وابستگی با یک وصله محلی که در کنترل نسخه زندگی می کند استفاده می شود. به عنوان مثال، فرض کنید یک وابستگی SomeDependency از PyPI دارای یک باگ است، و شما نمی توانید منتظر یک اصلاح upstream باشید. می توانید src را شبیه سازی یا کپی کنید، اصلاح را انجام دهید و آن را با برچسب Sometag در VCS قرار دهید. شما می توانید آن را در فایل مورد نیاز خود با خطی مانند این ارجاع دهید:

اگر SomeDependency قبلاً یک نیاز سطح بالا در فایل نیازمندی های شما بود، آن خط را با خط جدید جایگزین کنید. اگر SomeDependency یک وابستگی فرعی است، خط جدید را اضافه کنید.

واضح است که pip وابستگی های بسته را با استفاده از متادیتا install_requires تعیین می کند، نه با کشف فایل های requirement. txt تعبیه شده در پروژه ها.

فایلهای محدودیت#

فایل های محدودیت ها فایل های نیازمندی هایی هستند که فقط کنترل می کنند که کدام نسخه از نیاز نصب شده باشد، نه نصب یا عدم نصب آن. نحو و محتویات آن ها زیرمجموعه ای از Requirements Files است، با چندین نوع نحو مجاز نیست: محدودیت ها باید یک نام داشته باشند، نمی توانند قابل ویرایش باشند، و نمی توانند موارد اضافی را مشخص کنند. از نظر معنایی، یک تفاوت کلیدی وجود دارد: گنجاندن یک بسته در یک فایل محدودیت ها باعث نصب بسته نمی شود.

از یک فایل محدودیت مانند این استفاده کنید:

فایل های محدودیت دقیقاً به همان دلیلی استفاده می شوند که فایل های نیازمندی ها را زمانی که نمی دانید دقیقاً چه چیزهایی را می خواهید نصب کنید، استفاده می شوند. به عنوان مثال، بگویید که بسته "helloworld" در محیط شما کار نمی کند، بنابراین شما یک نسخه وصله شده محلی دارید. برخی از چیزهایی که نصب می کنید به "helloworld" بستگی دارند و برخی دیگر نه.

یکی از راه های اطمینان از استفاده مداوم از نسخه وصله شده این است که به صورت دستی وابستگی های هر چیزی را که نصب می کنید بررسی کنید، و اگر «helloworld» وجود دارد، یک فایل نیازمندی بنویسید تا در هنگام نصب آن مورد از آن استفاده کنید.

فایل های محدودیت ها راه بهتری را ارائه می دهند: یک فایل محدودیت واحد برای سازمان خود بنویسید و از آن در همه جا استفاده کنید. اگر چیزی که در حال نصب است نیاز به نصب "helloworld" داشته باشد، از نسخه ثابت شما که در فایل محدودیت ها مشخص شده است استفاده می شود.

پشتیبانی از فایل Constraints در پیپ 7. 1 اضافه شد. در تغییرات در حل کننده وابستگی پیپ در 20. 3 (2020) ما یک بازنگری نسبتاً جامع انجام دادیم، چندین ویژگی غیرمستند و پشتیبانی نشده را از پیاده سازی قبلی حذف کردیم و فایل های محدودیت ها را حذف کردیم تا صرفاً راهی برای تعیین محدودیت های جهانی (نسخه) برای بسته ها باشد.

نصب از Wheels#

"چرخ" یک قالب بایگانی ساخته شده است که می تواند در مقایسه با ساختمان و نصب از بایگانی منبع ، نصب را بسیار سرعت بخشد. برای اطلاعات بیشتر ، به Docs Wheel ، PEP 427 و PEP 425 مراجعه کنید.

PIP چرخ هایی را که در دسترس هستند ترجیح می دهد. برای غیرفعال کردن این امر ، از پرچم-بدون دود برای نصب PIP استفاده کنید.

در صورت یافتن چرخ های رضایت بخش ، PIP به طور پیش فرض برای یافتن بایگانی منبع خواهد بود.

برای نصب مستقیم از بایگانی چرخ:

برای شامل وابستگی های اختیاری ارائه شده در ابرداده های ارائه شده_کسستراس در چرخ ، باید نقل قول هایی را در اطراف نام هدف نصب اضافه کنید:

در آینده ، ممکن است نحو مسیر [Extras] کاهش یابد. توصیه می شود در هر کجا که ممکن باشد از نحو PEP 508 استفاده کنید.

برای مواردی که چرخ ها در دسترس نباشند ، PIP چرخ PIP را به عنوان راحتی ارائه می دهد تا چرخ ها را برای کلیه نیازها و وابستگی های شما بسازد.

PIP Wheel نیاز به نصب بسته چرخ دارد ، که برنامه افزودنی "BDIST_WHEEL" را که استفاده می کند ، فراهم می کند.

برای ساخت چرخ ها برای نیازهای خود و تمام وابستگی های آنها به یک فهرست محلی:

و سپس برای نصب آن الزامات فقط با استفاده از فهرست محلی چرخ های خود (و نه از PYPI):

بسته های حذف شده#

PIP قادر به حذف بیشتر بسته ها مانند این است:

PIP همچنین قبل از به روزرسانی به نسخه جدید ، یک نسخه خودکار از نسخه قدیمی یک بسته را انجام می دهد.

برای اطلاعات بیشتر و مثال ، به مرجع حذف PIP مراجعه کنید.

لیست بسته های#

برای لیست بسته های نصب شده:

برای لیست بسته های منسوخ ، و نمایش آخرین نسخه موجود:

برای نشان دادن جزئیات در مورد یک بسته نصب شده:

برای اطلاعات بیشتر و مثال ، به صفحات مرجع PIP و PIP Show مراجعه کنید.

جستجوی بسته ها#

PIP می تواند PYPI را برای بسته ها با استفاده از دستور جستجوی PIP جستجو کند:

از پرس و جو برای جستجوی نام و خلاصه همه بسته ها استفاده می شود.

برای اطلاعات بیشتر و مثال ، به مرجع جستجوی PIP مراجعه کنید.

این اکنون در پیکربندی پوشانده شده است.

این اکنون در پیکربندی پوشانده شده است.

این اکنون در پیکربندی پوشانده شده است.

این اکنون در پیکربندی پوشانده شده است.

تکمیل فرمان#

PIP با پشتیبانی از تکمیل خط فرمان در Bash ، Zsh و Fish همراه است.

برای تنظیم Bash:

برای تنظیم برای ZSH:

برای تنظیم ماهی:

برای تنظیم برای PowerShell:

از طرف دیگر ، می توانید از نتیجه فرمان تکمیل مستقیماً با عملکرد ارزیابی پوسته خود استفاده کنید ، به عنوان مثالبا افزودن موارد زیر به پرونده راه اندازی خود:

نصب از بسته های محلی#

در بعضی موارد ، شما ممکن است بخواهید فقط از بسته های محلی نصب کنید ، بدون ترافیک به PYPI.

ابتدا بایگانی هایی را که نیازهای شما را برآورده می کند بارگیری کنید:

توجه داشته باشید که قبل از تلاش برای بارگیری از PYPI ، بارگیری PIP ابتدا در حافظه نهان شما ظاهر می شود. اگر قبلاً نیازهای خود را نصب نکرده اید ، برای آن موارد حافظه نهان چرخ نخواهید داشت. در این حالت ، اگر برخی از نیازهای شما به عنوان چرخ های PYPI نمی آیند ، و شما می خواهید چرخ ها ، به جای آن این کار را اجرا کنید:

سپس ، برای نصب فقط از محلی ، شما از لینک های-find و-no-index استفاده خواهید کرد:

"فقط در صورت لزوم" ارتقا بازگشتی#

نصب PIP-به روزرسانی اکنون یک گزینه-بروزرسانی-استراتژی دارد که کنترل چگونه PIP به روزرسانی وابستگی ها را کنترل می کند. 2 استراتژی ارتقاء پشتیبانی شده است:

مشتاق: همه وابستگی ها را صرف نظر از اینکه آیا آنها هنوز نیازهای جدید والدین را برآورده می کنند ، ارتقا می دهد

فقط-مورد نیاز: یک وابستگی را فقط در صورت برآورده کردن نیازهای والدین جدید به روز می کند

استراتژی پیش فرض فقط در صورت نیاز است. این امر در PIP 10. 0 به دلیل شکستن ماهیت مشتاق هنگام ارتقاء وابستگی های متناقض تغییر یافت.

توجه به این نکته حائز اهمیت است که-ارتقاء بر نیازهای مستقیم (به عنوان مثال موارد مشخص شده در خط فرمان یا از طریق پرونده الزامات) تأثیر می گذارد ، در حالی که-ارتقاء استراتژی بر نیازهای غیرمستقیم (وابستگی به الزامات مستقیم) تأثیر می گذارد.

به عنوان نمونه ، می گویند Somepackage دارای وابستگی ، وابستگی است ، و هر دو آنها قبلاً نصب شده اند اما آخرین نسخه های موجود نیستند:

PIP Somepackage را نصب کنید: برخی از بسته های موجود یا وابستگی را ارتقا نمی دهد.

نصب PI P-به روزرسانی Somepackage: برخی از بسته بندی ها را ارتقا می دهد ، اما به یک وابستگی نمی پردازد (مگر اینکه حداقل یک نیاز برآورده نشود).

نصب PIP-ارتقاء SomePackage-Upgrade-Strategy = مشتاق: ارتقاء هر دو Package و Someededepension.

به عنوان یک یادداشت تاریخی ، "اصلاح" قبلی برای به دست آوردن رفتار تنها در صورت نیاز: این بود:

پیشنهادی برای یک فرمان به روزرسانی به عنوان یک جایگزین امن تر برای رفتار ارتقاء مشتاق در نظر گرفته می شود.

نصب کاربر#

با Python 2. 6 "طرح کاربر" برای نصب آمد ، به این معنی که همه توزیع های پایتون از یک مکان نصب جایگزین که مخصوص کاربر است پشتیبانی می کنند. مکان پیش فرض برای هر سیستم عامل در مستندات پایتون برای متغیر سایت. USER_BASE توضیح داده شده است. این حالت نصب را می توان با مشخص کردن گزین ه-USER برای نصب PIP روشن کرد.

علاوه بر این ، "طرح کاربر" را می توان با تنظیم متغیر محیط PythonUserbase ، که مقدار سایت را به روز می کند ، تنظیم شود.

برای نصب "Somepackage" در یک محیط با سایت. USER_BASE سفارشی به "/myAppenv" ، موارد زیر را انجام دهید:

نصب پی پ-کاربر چهار قانون را دنبال می کند:

هنگامی که بسته های نصب شده در سطح جهانی در مسیر پایتون قرار دارند و با الزامات نصب مغایرت دارند ، آنها نادیده گرفته می شوند و حذف نمی شوند.

هنگامی که بسته های نصب شده در سطح جهانی در مسیر پایتون قرار دارند و الزامات نصب را برآورده می کنند ، PIP هیچ کاری انجام نمی دهد ، و گزارش هایی مبنی بر اینکه نیاز برآورده می شود (شبیه به نحوه بسته های جهانی می تواند در هنگام نصب بسته ها در یک سیستم-سایت-بسته بندی VirtualEnv)واد

PIP یک نصب-کاربر را در یک بسته بندی-بدون سایت VirtualEnv (یعنی نوع پیش فرض VirtualEnv) انجام نمی دهد ، به دلیل عدم حضور سایت کاربر در مسیر پایتون. نصب بی معنی خواهد بود.

در یک سیستم-سایت-بسته های VirtualEnv ، PIP بسته ای را که با بسته ای در بسته های سایت VirtualEnv مغایرت دارد ، نصب نمی کند. نص ب-کاربر فاقد برتری sys. path است و بی معنی است.

برای روشن تر کردن قوانین ، در اینجا چند مثال آورده شده است:

از درون یک بسته بندی-بدون سایت virtualenv (یعنی نوع پیش فرض):

از درون یک سیستم-سایت-بسته بندی VirtualEnv که در آن SomePackage == 0. 3 قبلاً در VirtualEnv نصب شده است:

از درون یک پایتون واقعی ، جایی که برخی از بسته بندی ها در سطح جهان نصب نشده است:

از درون یک پایتون واقعی ، که در آن Somepackage در سطح جهان نصب شده است ، اما آخرین نسخه نیست:

از درون یک پایتون واقعی ، که در آن Somepackage در سطح جهان نصب شده است ، و آخرین نسخه است:

این اکنون در نصب های قابل تکرار پوشانده شده است.

رفع وابستگی های متناقض

استفاده از PIP از برنامه خود#

همانطور که قبلاً اشاره شد ، PIP یک برنامه خط فرمان است. در حالی که در پایتون پیاده سازی شده است ، و بنابراین از طریق کد PIP از طریق کد PIP در دسترس است ، شما نباید از این طریق از API های داخلی PIP استفاده کنید. چندین دلیل برای این وجود دارد:

کد پیپ فرض می کند که تنها کنترل وضعیت جهانی برنامه است. PIP مواردی مانند پیکربندی سیستم ورود به سیستم یا مقادیر جریان های استاندارد IO را بدون در نظر گرفتن این احتمال که ممکن است کد کاربر تحت تأثیر قرار گیرد ، مدیریت می کند.

کد PIP موضوع امن نیست. اگر قرار بود پیپ را در یک موضوع اجرا کنید ، هیچ تضمینی وجود ندارد که کد یا پیپ شما همانطور که انتظار دارید کار کنند.

پیپ فرض می کند که پس از اتمام کار خود ، این روند خاتمه می یابد. نیازی به این امکان وجود ندارد که کد دیگر پس از آن نقطه ادامه یابد ، بنابراین (به عنوان مثال) تماس با PIP دو بار در همان فرآیند احتمالاً دارای مشکل است.

این بدان معنا نیست که توسعه دهندگان pip اصولاً با این ایده که pip می تواند به عنوان یک کتابخانه استفاده شود مخالف هستند - فقط اینطور نیست که نوشته شده است و طراحی مجدد داخلی ها برای استفاده کار بسیار زیادی است. به عنوان یک کتابخانه، رسیدگی به تمام مسائل بالا، و طراحی یک API قابل استفاده، قوی و پایدار که ما می توانیم تضمین کنیم که در نسخه های مختلف پیپ در دسترس خواهد بود. و ما در حال حاضر منابع لازم برای در نظر گرفتن چنین وظیفه ای را نداریم.

این در عمل به این معنی است که همه چیز در داخل پیپ جزییات پیاده سازی در نظر گرفته می شود. حتی این واقعیت که نام واردات پیپ است نیز بدون اطلاع قبلی قابل تغییر است. در حالی که ما سعی می کنیم تا آنجا که ممکن است چیزها را خراب نکنیم، همه API های داخلی می توانند در هر زمان و به هر دلیلی تغییر کنند. همچنین به این معنی است که ما معمولاً مشکلاتی را که در نتیجه استفاده از پیپ به روشی پشتیبانی نشده است برطرف نمی کنیم.

همچنین لازم به ذکر است که نصب بسته ها در sys. path در فرآیند در حال اجرا پایتون چیزی است که فقط باید با دقت انجام شود. سیستم وارد کردن داده های خاصی را در حافظه پنهان ذخیره می کند و نصب بسته های جدید در حین اجرای برنامه ممکن است همیشه آنطور که انتظار می رود عمل نکند. در عمل، به ندرت مشکلی وجود دارد، اما چیزی است که باید از آن آگاه بود.

با گفتن تمام موارد بالا، اگر تصمیم دارید که می خواهید پیپ را از داخل برنامه خود اجرا کنید، ارزش دارد که گزینه های موجود را پوشش دهید. قابل اعتمادترین رویکرد، و رویکردی که به طور کامل پشتیبانی می شود، اجرای pip در یک فرآیند فرعی است. این به راحتی با استفاده از ماژول زیر فرآیند استاندارد انجام می شود:

اگر می خواهید خروجی را بیشتر پردازش کنید، از یکی از API های دیگر در ماژول استفاده کنید. ما در اینجا از فریز استفاده می کنیم که بسته های نصب شده را در قالب مورد نیاز خروجی می دهد.:

اگر نمی خواهید از عملکرد خط فرمان pip استفاده کنید، بلکه سعی می کنید کدی را پیاده سازی کنید که با بسته های پایتون، ابرداده های آن ها یا PyPI کار می کند، پس باید بسته های پشتیبانی شده دیگری را در نظر بگیرید که این نوع توانایی را ارائه می دهند. برخی از نمونه هایی که می توانید در نظر بگیرید عبارتند از:

بسته بندی - ابزارهای کاربردی برای کار با ابرداده استاندارد بسته (نسخه ها، الزامات، و غیره)

setuptools (مخصوصا pkg_resources) - توابعی برای پرس و جو کردن بسته هایی که کاربر روی سیستم خود نصب کرده است.

distlib - ابزارهای بسته بندی و توزیع (از جمله توابع برای تعامل با PyPI).

تغییرات در حل کننده وابستگی پیپ در 20. 3 (2020)#

PIP 20. 3 به طور پیش فرض برای کاربران Python 3 به طور پیش فرض برای کاربران Python 3 یک حل کننده وابستگی جدید دارد.. ما همچنین توضیحات ویدیویی دو دقیقه ای را که می توانید تماشا کنید ، تهیه کردیم.

ما در پاسخ به بازخورد آزمایش کنندگان ، به بهبود وضوح وابستگی PIP ادامه خواهیم داد. لطفاً از طریق بررسی آزمایش حل کننده بازخورد به ما بدهید.

مراقب#

تغییر بزرگ در این نسخه به حل کننده وابستگی PIP در PIP است.

رایانه ها برای نصب قطعات نرم افزاری باید از سفارش مناسب استفاده کنند ("برای نصب X ، ابتدا باید y را نصب کنید"). بنابراین ، هنگامی که برنامه نویسان Python نرم افزار را به عنوان بسته به اشتراک می گذارند ، آنها باید دقیقاً آن پیش نیازهای نصب را توصیف کنند ، و PIP باید در موقعیت های دشوار حرکت کند که در آن دستورالعمل های متناقض است. این حل کننده وابستگی جدید باعث می شود PIP در دستیابی به این منطق دشوار بهتر شود و PIP را برای استفاده و عیب یابی آسان تر کند.

مهمترین تغییرات در حل کننده عبارتند از:

این ناسازگاری را کاهش می دهد: دیگر ترکیبی از بسته هایی را که متناقض است ، نصب نمی کند. در نسخه های قدیمی PIP ، PIP امکان نصب بسته ای وجود دارد که الزامات اعلام شده بسته نصب شده دیگر را برآورده نمی کند. به عنوان مثال ، در PIP 20. 0 ، PIP نصب کنید "شش = 1. 12. 0 ،

این سخت تر خواهد بود - اگر از پیپ بخواهید دو بسته را با نیازهای ناسازگار نصب کند ، امتناع می کند (به جای نصب یک ترکیب شکسته ، مانند نسخه های قبلی).

بنابراین ، اگر از راه حل ها برای مجبور کردن پیپ برای مقابله با ترکیبات مورد نیاز ناسازگار یا متناقض استفاده کرده اید ، اکنون زمان مناسبی برای رفع مشکل اساسی در بسته ها است ، زیرا پیپ از اینجا به بعد سخت تر خواهد بود.

این همچنین بدان معنی است که ، هنگامی که شما یک دستور نصب پیپ را اجرا می کنید ، پیپ فقط بسته هایی را که در آن دستور نصب می کنید در نظر می گیرد و ممکن است بسته های از قبل نصب شده را بشکند. تضمین نمی کند که محیط شما همیشه سازگار باشد. اگر PIP نصب کنید X و سپس PIP را نصب کنید ، ممکن است نسخه Y که می گیرید متفاوت از آنچه در صورت اجرای PIP نصب X Y را در یک دستور واحد اجرا کرده بود ، متفاوت باشد. ما در نظر داریم این رفتار را تغییر دهیم (در هر شماره 7744) و می خواهیم افکار شما را در مورد رفتار PIP باید داشته باشد. لطفاً به نظرسنجی ما در مورد به روزرسانی هایی که درگیری ایجاد می کند پاسخ دهید.

ما همچنین پشتیبانی خود را از Constraints Files، نصب های قابل ویرایش و عملکردهای مرتبط تغییر می دهیم. ما یک بازنگری نسبتاً جامع انجام دادیم و فایل های محدودیت ها را حذف کردیم تا صرفاً راهی برای تعیین محدودیت های جهانی (نسخه) برای بسته ها باشد، و بنابراین برخی از ترکیب هایی که قبلاً مجاز بودند اکنون باعث ایجاد خطا می شوند. به طور مشخص:

محدودیت ها الزامات موجود را نادیده نمی گیرند. آنها به سادگی محدود می کنند که چه نسخه هایی به عنوان ورودی برای حل کننده قابل مشاهده است (نگاه کنید به #9020)

ارائه یک نیاز قابل ویرایش (-e . ) باعث نمی شود که پیپ از تعیین کننده ها یا محدودیت های نسخه چشم پوشی کند (به #8076 مراجعه کنید)، و اگر بین یک نیاز پین شده و یک فهرست محلی تضاد دارید، پیپ نشان می دهد که نمی تواند نسخه ای راضی کننده پیدا کند. هر دو (نگاه کنید به #8307)

حالت بررسی هش مستلزم آن است که همه الزامات به صورت یک == مطابق با یک نسخه مشخص شوند و ممکن است در ترکیب با محدودیت ها به خوبی کار نکنند (#9020 و #8792 را ببینید).

در صورت لزوم برای برآوردن محدودیت ها، pip با خوشحالی بسته ها را مجدداً نصب می کند، ارتقاء یا کاهش می دهد، بدون نیاز به گزینه های خط فرمان اضافی (به #8115 و گزینه هایی که فرآیند نصب را کنترل می کنند مراجعه کنید).

الزامات بدون نام به عنوان محدودیت مجاز نیستند (#6628 و #8210 را ببینید)

پیوندها به عنوان محدودیت مجاز نیستند (به #8253 مراجعه کنید)

محدودیت ها نمی توانند موارد اضافی داشته باشند (نگاه کنید به #6628)

طبق خط مشی پشتیبانی Python 2 ما، کاربران pip 20. 3 که از Python 2 استفاده می کنند به طور پیش فرض از حل کننده قدیمی استفاده می کنند. کاربران پایتون 2 باید در اسرع وقت به پایتون 3 ارتقا دهند، زیرا در پیپ 21. 0 در ژانویه 2021، پیپ به طور کلی پشتیبانی از پایتون 2 را قطع کرد.

نحوه ارتقا و مهاجرت#

Pip 20. 3 را با pytho n-m pip install --upgrade pip نصب کنید.

با اجرای چک پیپ، محیط فعلی خود را اعتبارسنجی کنید. اگر در مجموعه بسته های نصب شده خود ناهماهنگی داشته باشید، این گزارش می دهد. داشتن یک نصب تمیز باعث می شود که احتمال بروز مشکلات با حل کننده جدید بسیار کمتر شود (و ممکن است مشکلات پنهان در محیط فعلی شما را برطرف کند!). اگر چک پیپ را اجرا می کنید و به مواردی برخورد می کنید که نمی توانید بفهمید، لطفاً از ردیاب یا چت ما کمک بخواهید.

نسخه جدید pip را تست کنید.

در حالی که ما سعی کرده ایم مطمئن شویم که مجموعه آزمایشی pip تا جایی که می توانیم موارد متعددی را پوشش می دهد، اما بسیار آگاه هستیم که افرادی هستند که از پیپ با گردش های کاری و فرآیندهای ساخت متفاوت استفاده می کنند و ما نمی توانیم همه موارد را بدون شما پوشش دهیم. کمک.

اگر از pip برای نصب نرم افزار خود استفاده می کنید، حل کننده جدید را امتحان کنید و به ما اطلاع دهید که آیا با نصب pip برای شما کار می کند یا خیر. تلاش كردن:

نصب چندین بسته به طور همزمان

ایجاد مجدد یک محیط با استفاده از یک پرونده مورد نیاز. txt

با استفاده از نصب PIP-Force-Reindall برای بررسی اینکه آیا آنچه را که فکر می کنید باید انجام دهد

با استفاده از پرونده های محدودیت

"تنظیمات برای آزمایش با توجه ویژه" و "نمونه هایی برای امتحان کردن" در زیر

اگر یک خط لوله ساخت دارید که بستگی به نصب PIP دارد که وابستگی های شما را برای شما نصب می کند ، بررسی کنید که حل کننده جدید آنچه را که شما نیاز دارید انجام می دهد.

CI پروژه (مجموعه تست ، فرآیند ساخت و غیره) را با استفاده از حل کننده جدید اجرا کنید و از هرگونه مسئله ای به ما اطلاع دهید.

اگر در گذشته با PIP با مشکلات حل کننده روبرو شده اید ، بررسی کنید که آیا تصمیم جدید آنها را برطرف می کند و درگیری با درگیری های وابستگی را خوانده است. همچنین ، به ما اطلاع دهید که آیا حل کننده جدید با هرگونه راهکاری که برای پرداختن به محدودیت های حل کننده فعلی ارائه می دهید ، مشکل دارد. ما باید اطمینان حاصل کنیم که افراد می توانند چنین راه حل هایی را به آرامی منتقل کنند.

اگر ابزاری را که PIP را بسته بندی می کند یا از آن برای ارائه بخشی از عملکرد خود استفاده می کنید ، پشتیبانی می کنید یا از آن پشتیبانی می کنید ، لطفاً ادغام خود را با PIP 20. 3 آزمایش کنید.

عیب یابی و در صورت لزوم این راه حل ها را امتحان کنید.

اگر پیپ برای نصب بسته ها بیشتر طول می کشد ، وضوح وابستگی را به دنبال راه های کاهش زمان PIP به دلیل درگیری های وابستگی ، بازگردانی کنید.

اگر نمی خواهید PIP در واقع وابستگی ها را برطرف کند ، از گزینه-no-deps استفاده کنید. این زمانی مفید است که شما مجموعه ای از نسخه های بسته را در واقعیت داشته باشید که در واقعیت با هم کار می کنند ، حتی اگر ابرداده آنها می گوید که آنها درگیری دارند. برای راهنمایی در مورد رفع طولانی مدت ، مقابله با درگیری های وابستگی را بخوانید.

اگر در هنگام رفع علل اصلی آنها به خطاهای وضوح و حل و فصل نیاز دارید ، می توانید رفتار قدیمی حل کننده قدیمی را با استفاده از پرچم انتخاب کنید-با استفاده از میراث- resolver. این کار تا زمانی که PIP 21. 0 را منتشر کنیم کار خواهد کرد (به جدول زمانی استهلاک مراجعه کنید).

لطفاً اشکالات را از طریق بررسی آزمایش حل کننده گزارش دهید.

تنظیمات برای تست با توجه ویژه#

پرونده های مورد نیاز با 100+ بسته

گردش کار نصب که شامل چندین پرونده مورد نیاز است

پرونده های مورد نیاز که شامل هش (حالت بررسی هش) یا وابستگی های پین شده (شاید به عنوان خروجی از PIP-compile در لوله های PIP) باشد

ادغام مداوم/تنظیمات استقرار مداوم

نصب از هر نوع سیستم کنترل نسخه (به عنوان مثال ، GIT ، براندازی ، جیوه یا CVS) ، در هر پشتیبانی VCS

نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 47 تاريخ : چهارشنبه 23 فروردين 1402 ساعت: 15:25