سؤال

لقد بدأت مؤخرًا في تعلم Python ، وأنا مرتبك بعض الشيء حول كيفية توزيع الحزم وتثبيتها.

أنا أفهم أن الطريقة الرسمية لتثبيت الحزم هي distutils: تقوم بتنزيل Tarball Source ، وتفريغه ، وتشغيله: python setup.py install, ، ثم تقوم الوحدة بتثبيت نفسها تلقائيًا

أنا أعرف أيضا عن setuptools الذي يأتي مع easy_install السيناريو المساعد. يستخدم بيض للتوزيع ، ومن ما أفهمه ، تم بناؤه على رأس Distutils ويفعل نفس الشيء كما هو مذكور أعلاه ، بالإضافة إلى أنه يعتني بأي تبعيات مطلوبة ، وكلها تم جلبها من Pypi

ثم هناك أيضا pip, ، وهو ما زلت غير متأكد من كيفية اختلافها عن الآخرين.

أخيرًا ، نظرًا لأنني على جهاز Windows ، تقدم الكثير من الحزم أيضًا تصميمات ثنائية من خلال مثبت الويندوز, ، لا سيما تلك التي تتطلب تجميع كود C/Fortran ، والتي ستكون بمثابة كابوس لتجميعها يدويًا على النوافذ (تفترض أن لديك MSVC أو Mingw/Cygwin Dev بيئة مع جميع المكتبات اللازمة .. مع ذلك حاول بناء Numpy أو Scipy بنفسك و سوف تفهم!)

لذلك هل يمكن لأي شخص أن يساعدني في فهم كل هذا ، وشرح الاختلافات ، إيجابيات/سلبيات كل طريقة. أود أن أعرف كيف يتابع كل منها الحزم (سجل Windows ، ملفات التكوين ، ..). على وجه الخصوص ، كيف يمكنك إدارة جميع مكتبات الطرف الثالث (تكون قادرًا على إدراج الحزم المثبتة ، وتعطيل/إلغاء التثبيت ، إلخ.)

هل كانت مفيدة؟

المحلول

أستخدم PIP ، وليس على Windows ، لذلك لا يمكنني تقديم المقارنة مع خيار Windows-Installer ، فقط بعض المعلومات حول PIP:

  • تم تصميم PIP على رأس setuptools ، ويتطلب تثبيته.
  • PIP هو بديل (تحسين) لـ Seasuptools easy_install. إنه يقوم بكل ما يفعله كل شيء EASY_INSTALL ، بالإضافة إلى الكثير (تأكد من تنزيل جميع التوزيعات المطلوبة قبل تثبيت أي منها فعليًا لتجنب التثبيتات المكسورة ، وسرد التوزيعات والإصدارات المثبتة ، وإلغاء التثبيت ، والبحث PYPI ، والتثبيت من ملفات متطلبات تسرد توزيعات متعددة ، و الإصدارات ...).
  • لا تدعم PIP حاليًا تثبيت أي شكل من أشكال التوزيعات المسبقة أو الثنائية ، وبالتالي لا يمكن تثبيت أي توزيعات مع امتدادات تتطلب تجميع إلا إذا كان لديك المترجم المناسب المتاح. يوجد دعم التثبيت من مستودعات Windows Binary على خريطة الطريق ، ولكن ليس من الواضح متى سيحدث.
  • حتى وقت قريب ، كان دعم Windows من PIP قشاريًا وغير مختبر. بفضل الكثير من العمل من Dave Abrahams ، يجتاز Pip Trunk الآن جميع اختباراته على Windows (وهناك خادم تكامل مستمر يساعدنا على ضمان بقائه على هذا النحو) ، ولكن لم يتم إصدار إصدار بما في ذلك هذا العمل. لذلك يجب أن يأتي دعم Windows أكثر موثوقية مع الإصدار التالي.
  • جميع آليات تثبيت حزمة Python القياسية تخزن جميع البيانات الوصفية حول التوزيعات المثبتة في ملف أو ملفات بجانب الحزمة (الحزمة) المثبتة الفعلية. يستخدم DistUtils ملف distribution_name-xx-pyx.x.egg-info ، يستخدم PIP دليلًا مشابهًا مع ملفات بيانات تعريف متعددة فيه. يضع Easy_install جميع كود بيثون المثبت لتوزيع داخل zipfile أو دليله ، ويضع دليلًا للبيضة داخل هذا الدليل مع بيانات التعريف فيه. إذا قمت باستيراد حزمة Python من المطالبة التفاعلية ، فتحقق من قيمة الحزمة .__ file__ ؛ يجب أن تجد البيانات الوصفية لتوزيع تلك الحزمة القريبة.
  • يتم تخزين المعلومات حول التوزيعات المثبتة فقط في أي نوع من السجلات العالمية من خلال أدوات التغليف الخاصة بنظام التشغيل مثل Windows Forperers أو APT أو RPM. لا تعدل أدوات تغليف Python القياسية أو الانتباه إلى هذه القوائم.
  • من الأفضل استخدام PIP (أو ، في رأيي ، أي أداة تغليف Python) VirtualEnv, ، مما يتيح لك إنشاء بيئون مصغرة لكل مشروع معزولة والتي يمكنك من خلالها تثبيت الحزم دون التأثير على نظامك العام. كل VirtualEnV جديد يأتي تلقائيًا مع تثبيت PIP فيه.

زوجان آخران قد ترغب في أن تكون على دراية به أيضًا (نعم ، هناك المزيد!):

  • نشر هو شوكة من setuptools التي لديها بعض الإثارات والميزات الإضافية.
  • distutils2 يهدف إلى أن يكون "الجيل القادم" لتعبئة بيثون. إنه (نأمل) اعتماد أفضل ميزات Distutils/setuptools/distribute/pip. يتم تطويره بشكل مستقل وليس جاهزًا للاستخدام حتى الآن ، ولكن يجب أن تحل محل Distutils في مكتبة Python القياسية وتصبح حل تغليف Python الفعلي.

آمل أن كل ذلك ساعد في توضيح شيء! حظا طيبا وفقك الله.

نصائح أخرى

يمكنني استخدام Windows و Python. إنه أمر محبط إلى حد ما ، لأن PIP لا يعمل دائمًا على تثبيت الأشياء. Python ينتقل إلى PIP ، لذلك ما زلت أستخدمه. Pip لطيف ، لأنه يمكنك إلغاء تثبيت العناصر والاستخدام

pip freeze > requirements.txt
pip install -r requirements.txt

سبب آخر يعجبني PIP هو للبيئات الافتراضية مثل VenV مع Python 3.4. لقد وجدت VenV أسهل بكثير في استخدام Windows من VirtualEnv.

إذا لم تتمكن من تثبيت حزمة ، فعليك العثور على الثنائي لذلك. http://www.lfd.uci.edu/~gohlke/pythonlibs/

لقد وجدت أن هذه الثنائيات مفيدة للغاية.

تحاول Pip صنع شيء يسمى عجلة للمنشآت الثنائية.

pip install wheel
wheel convert path\to\binary.exe
pip install converted_wheel.whl

سيتعين عليك أيضًا القيام بذلك لأي مكتبات مطلوبة لا يتم تثبيتها والتي تكون مطلوبة لهذه الحزمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top