لطفاً از PIP #263 استفاده نکنید

ساخت وبلاگ

هنگام نصب بسته Python ، این کار را با تماس با PIP نصب می کنید. یا تنوع. دو مشکل در این مورد وجود دارد:

  1. PIP یک وابستگی اضافی است که کاربران ممکن است یا ممکن است بخواهند (قبلاً این مورد وجود داشت که پایتون همیشه با پایتون تهیه و توزیع می شد ، اما امروزه تصاویر رسمی داکر بدون پیپ توزیع می شوند).
  2. نصب پیپ. کار اشتباهی انجام می دهداین چرخ را ایجاد می کند و سپس سعی می کند هر آنچه را که ایجاد کرده است نصب کند. مشکل این امر این است که همیشه امکان نصب چرخ امکان پذیر نیست / همه بسته ها به گونه ای طراحی شده اند که از این طریق نصب شوند / روش متعارف برای نصب چیزی که دارای setup. py است ، اجرای Setup. Py است. و همین مورد در مورد الزامات است. txt - این یک فرمت موقت و عمدتاً تصادفی برای مشخص کردن وابستگی ها است. Setuptools نقص های خود را نیز دارد ، اما از نظر نصب دقیقاً همان چیزی که از آن خواسته شده است ، سختگیرانه تر است و در حال حاضر وجود دارد ، و به توسعه دهندگان این امکان را می دهد تا دقیق تر مشخص کنند که منظور از نصب هر چیزی چیست ، در حالی که چرخ ها انعطاف پذیر هستند و بسیاری از آنها ایجاد می کنندمشکلات در مکان WRT آینده منابع و مواردی از این دست.

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

متن با موفقیت به روز شد ، اما این خطاها با آن روبرو شدند:

WVXVW در 28 دسامبر 2018 اظهار نظر کرد

خوب ، پیپ شکسته است ، اما همه مدیران بسته بندی دیگر که در پایتون وجود دارند.

چرا آنچه من می خواهم عجیب نیست:

هر نصب غیر اصلی نیاز به اجرای تنظیمات دارد. این امر به این دلیل است که هر نصب و راه اندازی که نیاز به ساخت و سازهای بومی دارد ، نیاز به Setuptools دارد ، بسیاری از ماژول ها که نیاز به نصب داده ها دارند ، از Setuptools استفاده می کنند زیرا پیش بینی این است که PIP داده های شما را نصب کند.

دلیل دیگر ، همانطور که قبلاً هم اشاره کردم: پیپ شلخته است. اگر کارها اشتباه پیش برود ، زباله ها را نصب می کند و وانمود می کند که همه چیز خوب است. از نظر همه چیز بدی که Setuptools این است ، حداقل این کار را نمی کند.

پیپ ملاس کند است. به منظور افشای کامل ، آنچه در اینجا انجام می دهم: من تعداد انگشت شماری از بسته ها را دارم که باید روی VM نصب کنم که برای آزمایش استفاده می شود. یعنیسناریوی معمولی این است که یک توسعه دهنده در کد خود تغییر می کند ، یک اسکریپت استقرار را اجرا می کند ، که یک خوشه ای از VM ها را ایجاد می کند که کد آنها مستقر شده است ، و سپس ، اگر بخواهند آنچه را که انجام داده اند آزمایش کنند ، نسخه محلی بسته های آزمایش را می گیرندو آنها را به VMS در خوشه مستقر کنید. بسته های آزمایش بزرگ نیستند: همه در هر 3 بسته هر یک با تعداد رقمی پرونده. وابستگی های آنها در هر 8 بسته است که همچنین بسیار بزرگ نیستند / مجموعه های پیچیده ای ندارند. فرآیند استقرار (برای تست) بیش از 6 دقیقه طول می کشد. که تمام انتقال پرونده ها به VMS و در واقع نصب بسته ها در چند ثانیه طول می کشد ، و بقیه توسط PIP "حل وابستگی" اشغال شده است.

و "setup. py" به عنوان یک مفهوم (به آرامی) در راه رسیدن به چیزهای استاتیک تر حتی در زمان ساخت است.

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

خط پایین: خود را فریب ندهید که فکر می کنند Setuptools در حال مرگ است و توسط PIP + WHEAL جایگزین می شود. این نمی خواهداز امروز ، این تنها راه قابل اعتماد برای انجام کارها است.

جرمن در 28 دسامبر 2018 اظهار داشت

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

Nailor در 29 دسامبر 2018 اظهار نظر کرد

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

از نظر تاریخی ما این کار را می کردیم اما به سرعت کشف شد که در حال اجرا پیپ به طور پیش فرض برای اکثر موارد استفاده ایده بهتری است

با عرض پوزش اگر قالب بندی مطرح شود: نوشتن این کار از طریق تلفن. آیا می توانید مثالی از مکان پیپ برتر از Setupuptools را بیان کنید؟به هر حال ، مشکلات بیشتری در مورد راه اندازی وجود دارد. به عنوان مثال ، کد شما فرض می کند که باید از VenV به جای VirtualEnV استفاده شود ، اما این به عنوان وابستگی اعلام نمی شود. بنابراین در حال حاضر من به استفاده از DH و دوستان ساده متوسل شدم. اما شاید من در آینده این ایده را دوباره مرور کنم.

On Saturday, December 29, 2018, Jyrki Pulliainen ***@***.***>نوشت: سلام ، ممنون از گزارش اشکال. حل بسته بندی پایتون در واقع خارج از محدوده پروژه ما است. با این حال ، می توانید یک پچ را پیشنهاد کنید که امکان اجرای فقط Setup. Py را به جای PIP امکان پذیر کند. از نظر تاریخی قبلاً این کار را انجام می دادیم اما به سرعت کشف شد که در حال اجرا PIP به طور پیش فرض برای اکثر موارد استفاده ایده بهتری است - شما این را دریافت می کنید زیرا شما نویسنده موضوع هستید. به این ایمیل مستقیماً پاسخ دهید ، آن را در GitHub مشاهده کنید یا موضوع را بی صدا کنید.

Nailor در 30 دسامبر 2018 اظهار نظر کرد •

(تلفن در اینجا نیز) گزینه VENV برای Python 3. 4+ است ، جایی که در واقع با مترجم حمل می شود (برای هر راه اندازی عاقل به هر حال). VirtualEnv منظم در واقع حتی در این موارد پیش فرض است ، با استفاده از ساخته شده در یک مورد نیاز به عبور از پرچم دارد. آنچه در حال اجرا است PIP: این فقط همانطور که کاربران انتظار دارند رفتار می کند. نمونه ای از خرابی Setuptools در مورد Distros قدیمی تر است (به عنوان مثال Ubuntu Trusty) که در آن "Setup. py نصب" نتایج تماس با "Easy_install" را که در بیشتر موارد بود ، نه آنچه انتظار می رفت بود. در حال اجرا "نصب PIP." در عوض از PIP برای حل این وابستگی ها استفاده می کند و به طور کلی رفتار منسجم تری را ارائه می دهد. این ممکن است مسئله ای در مورد Distros جدیدتر نباشد ، اما من هنوز هم می خواهم این نوع پیش فرض عاقلانه باشد. می توان گسل ها را به روشی که PIP نیازهای خود را کنترل می کند ، مقصر بدانیم اما مطمئناً اگر ما به طور پیش فرض در Resolver دوم مخلوط شویم ، کمکی نمی کند. این گفته است که من برای تغییری که کاربران را قادر می سازد یک دستور نصب سفارشی را در صورتی که شخصی برای پیشنهاد چنین مواردی باشد ، باز کند

On Sun, 30 Dec 2018 at 09:37, wvxvw ***@***.***> wrote: Sorry if the formatting comes out botched: writing this from a phone. Can you give an example of where pip was superior to setuptools? Anyways, there are few more problems with the setup. For instance, your code assumes it must be possible to use venv rather than virtualenv, but that isn't declared as dependency. So for now I resorted to use plain dh and friends. But maybe I will revisit this idea in the future. On Saturday, December 29, 2018, Jyrki Pulliainen ***@***.*** > wrote: > Hi, > > Thanks for the bug report. Solving Python packaging is indeed outside the > scope of our project. However feel free to propose a patch that enables > running only setup.py install instead of pip. > > Historically we used to run that but it was quickly discovered that > running pip is a better idea by default for most use cases > > — > You are receiving this because you authored the thread. > Reply to this email directly, view it on GitHub > < #263 (comment) >, > or mute the thread > < https://github.com/notifications/unsubscribe-auth/ADAGDMdEXGHt4CGDOhI8nqmRZ7pN7YC_ks5u95kdgaJpZM4Zgedf > > . >- شما این را دریافت می کنید زیرا اظهار نظر کردید. به این ایمیل مستقیماً پاسخ دهید ، آن را در GitHub مشاهده کنید یا موضوع را بی صدا کنید.

نه ، این واقعاً تفاوت بین `setup. py install" و `pip نصب نیست." اگرچه ، من نمی دانم آخرین نسخه دبیان که با ماژول VenV ارسال شده است ، اما ، Ubuntu کشتی های بدون آن را از 16 سالگی (یعنی درحداقل دو سال اکنون). بیشتر نصب های پایتون امروزه در لینوکس های مختلف بدون ماژول های «پیپ» یا `venv» وجود دارند ، باید خودتان آن را اضافه کنید. این همان کاری است که اوبونتو ، آرچ و سانتوس حداقل انجام می دهند. در مورد فراخوانی "Easy_Install" - این پروژه دیگر وجود ندارد ، در «setuptools» ادغام شد. و برخلاف تصور عامه ، "Setuptools" در واقع کار درستی را انجام می دهد ، جایی که "پیپ" پوسته پوسته است / از نصب زباله ها خوشحال است. با این حال ، این تفاوت بین `setup. py install" و "نصب پیپ" نیست. اول اول تخم مرغ را از بسته شما تولید می کند ، و سپس آن را نصب می کند ، در حالی که بعدی یک چرخ تولید می کند و آن را نصب می کند. چرخ ها ذاتاً برای نصب ها نامناسب هستند: آنها فقط به شما امکان می دهند مواردی را در زیر دایرکتوری پروژه خود نصب کنید ، یا در برخی از دایرکتوری های خاص منتخب ، که این یک تفکر بسیار ساده لوح / غیرقانونی است. بنابراین ، به طور خلاصه: «پیپ» از چیزی جدیدتر و براق تر و باگتر استفاده می کند ، که با نصب سیستم شما نیز همراه نیست (نه خود پیپ و نه "چرخ") ، در حالی که "setuptools" هستند (هنوز؟) بسته بندی شده با سیستم. تفاوت دیگر این است که "پیپ" در حین نصب از pypi.org متمرکز شده است و دارای یک "عملکرد ویژه" برای برخورد با آن سایت است ، این در حالی است که افرادی که می خواهند Debs را بسته بندی کنند ، به احتمال زیاد از نرم افزارهای بزرگتر استفاده می کنند. شرکت هایی که این "عملکرد ویژه" برای آنها منبع مشکلات غیر ضروری است. به عنوان مثال ، از آنجا که چندی پیش "پیپ" پشتیبانی از "وابستگی_لینک" را به منابع خارج از pypi.org کاهش داد. بدون هیچ فرصتی برای غلبه بر این تصمیم. به دانش من ، این امر باعث شد كه بسیاری از شركتها یا "پیپ" را به روز كنند یا آن را از ابزار اتوماسیون خود به طور كامل خارج كنند. در خورشید ، 30 دسامبر 2018 ساعت 12:38 بعد از ظهر Jyrki Pulliainenنوشت:

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

برچسب : نویسنده : لیال حقیقی بازدید : 80 تاريخ : سه شنبه 8 فروردين 1402 ساعت: 23:50