Pip: الترقية إلى النقطة 10: إنه مشروع Distutils مثبت وبالتالي لا يمكننا تحديد الملفات التي تنتمي إليه بدقة مما سيؤدي إلى إلغاء التثبيت الجزئي فقط.

تم إنشاؤها على ١٦ أبريل ٢٠١٨  ·  41تعليقات  ·  مصدر: pypa/pip

  • إصدار النقطة: 10.0.0
  • إصدار بايثون: 2.7
  • نظام التشغيل: Amazon Linux AMI 2017.09.i

وصف:

أحاول تثبيت docker-py ، فهو جزء معتاد من سير عمل إعداد البنية التحتية لدينا ونقوم بتشغيله لبعض الوقت. تلقيت الخطأ التالي لبعض الحزم:

Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

كل شيء يعمل كما هو متوقع مع النقطة 9.0.2. هل تغير شيء ما؟ ما الذي يمكنني فعله لإصلاح هذا؟ (باستثناء تثبيت إصدار النقطة بـ 9.0.2 أو 9.0.3)

ما قمت بتشغيله:

محاولة التثبيت الأولى مع النقطة 10

# /usr/local/bin/pip2 install docker-py
Collecting docker-py
  Using cached docker_py-1.10.6-py2.py3-none-any.whl
Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python2.7/site-packages (from docker-py) (1.11.0)
Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in /usr/local/lib/python2.7/site-packages (from docker-py) (3.5.0.1)
Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in /usr/local/lib/python2.7/site-packages (from docker-py) (1.0.22)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python2.7/site-packages (from docker-py) (0.47.0)
Collecting requests!=2.11.0,>=2.5.2 (from docker-py)
  Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting docker-pycreds>=0.2.1 (from docker-py)
  Using cached docker_pycreds-0.2.2-py2.py3-none-any.whl
Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (2.6)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py) (2018.1.18)
Collecting chardet<3.1.0,>=3.0.2 (from requests!=2.11.0,>=2.5.2->docker-py)
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: chardet, requests, docker-pycreds, docker-py
  Found existing installation: chardet 2.0.1
Cannot uninstall 'chardet'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

تم تخفيض التصنيف إلى النقطة 9.0.3 ثم حصل على هذا:

# /usr/local/bin/pip2 install docker-py
Collecting docker-py
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading docker_py-1.10.6-py2.py3-none-any.whl (50kB)
    100% |████████████████████████████████| 51kB 4.8MB/s
Requirement already satisfied: six>=1.4.0 in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: backports.ssl-match-hostname>=3.5; python_version < "3.5" in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: ipaddress>=1.0.16; python_version < "3.3" in /usr/local/lib/python2.7/site-packages (from docker-py)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python2.7/site-packages (from docker-py)
Collecting requests!=2.11.0,>=2.5.2 (from docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |████████████████████████████████| 92kB 8.2MB/s
Collecting docker-pycreds>=0.2.1 (from docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading docker_pycreds-0.2.2-py2.py3-none-any.whl
Requirement already satisfied: idna<2.7,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Requirement already satisfied: urllib3<1.23,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests!=2.11.0,>=2.5.2->docker-py)
Collecting chardet<3.1.0,>=3.0.2 (from requests!=2.11.0,>=2.5.2->docker-py)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 7.7MB/s
Installing collected packages: chardet, requests, docker-pycreds, docker-py
  Found existing installation: chardet 2.0.1
    DEPRECATION: Uninstalling a distutils installed project (chardet) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling chardet-2.0.1:
      Successfully uninstalled chardet-2.0.1
  Found existing installation: requests 1.2.3
    Uninstalling requests-1.2.3:
      Successfully uninstalled requests-1.2.3
Successfully installed chardet-3.0.4 docker-py-1.10.6 docker-pycreds-0.2.2 requests-2.18.4
You are using pip version 9.0.3, however version 10.0.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

لقد لاحظت أيضًا وجود مشكلات في تثبيت awscli ، فهي تشتكي من عدم تثبيت بعض الحزم. (يؤدي تثبيتها أولاً إلى إصلاح المشكلة).

إذا حاولت فرض تثبيت awscli على سبيل المثال ، فسأحصل على نفس الخطأ لـ PyYAML:
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

support

التعليق الأكثر فائدة

لقد استخدمت اتباع الخطوات وحل هذه المشكلة

  1. نسخة مخفضة:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. حاولت إعادة تثبيت الحزمة:
    pip install xxx --disable-pip-version-check
  3. أخيرًا ، قم باستعادة أحدث إصدار للنقطة:
    pip install --upgrade pip

ال 41 كومينتر

Se # 4805 و # 3389 للتاريخ. بشكل أساسي ، لا تستطيع النقطة إلغاء تثبيت الحزم المثبتة بواسطة موزعات "نقية" بشكل صحيح ، لأن التوزيعات لا تسجل بيانات وصفية كافية لنا للقيام بذلك. لقد أزلنا سابقًا البيانات الوصفية للتثبيت ، بحيث يبدو أننا قمنا بالتثبيت ، ولكن كان علينا ترك الملفات وراءنا. هذا يسبب مشاكل. منذ النقطة 8 ، نحاول التوقف عن القيام بذلك ، لأنه سبب للمشاكل ، لكن محاولتنا الأولية تم التراجع عنها لأنها أثرت على الكثير من الأشخاص في ذلك الوقت. مع النقطة 10 ، توقفنا أخيرًا عن محاولة إلغاء تثبيت حزم التوزيعات ، والآن نقوم بإبلاغ المستخدم بالمشكلة كما ترى هنا.

بشكل أساسي ، إذا قمت (أو بعض البنية الأساسية التي تستخدمها) بتثبيت حزمة باستخدام التوزيعات ، فأنت بحاجة إلى إدارة (وعلى وجه الخصوص) إلغاء تثبيتها "باستخدام Distutils". لسوء الحظ ، لا تتضمن distutils أمر إلغاء التثبيت ، لذا فإن "uninstall using distutils" يعني إزالة الحزمة يدويًا.

pfmoore شكرا على الإجابة السريعة!

هذا غير مريح إلى حد ما لأن معظم الحزم تأتي مثبتة على أنها تبعيات ونحن لا نديرها بأنفسنا. ستكون أتمتة الإزالة مثيرة للاهتمام.

أرى أن هناك بعض الحركة لترقية الحزم فقط ، دون إلغاء تثبيتها أولاً. سيكون من الرائع أن يحدث هذا في النهاية.

يمكننا إغلاق هذه القضية حيث تمت مناقشتها على نطاق واسع في مكان آخر. شكرا!

حاول إزالة الحزمة يدويًا من "حزم الموقع". هذا يعمل بشكل مثالي!

يبدو أنني أتغلب على هذه المشكلة من خلال تزويد إصدار النقطة بالأمر
تثبيت نقطة - أنا == 9.0.3 -r متطلبات. txt

لقد استخدمت اتباع الخطوات وحل هذه المشكلة

  1. نسخة مخفضة:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. حاولت إعادة تثبيت الحزمة:
    pip install xxx --disable-pip-version-check
  3. أخيرًا ، قم باستعادة أحدث إصدار للنقطة:
    pip install --upgrade pip

يبدو أن هذا لإصلاح المشكلة بالنسبة لي: https://github.com/blockstack/blockstack-core/issues/504

في الحالة الأصلية أعلاه ، سيكون هذا:

pip install docker-py --ignore-installed PyYAML

لا أعرف من أنت ، لكني أحبك.

إذن pfmoore ما الذي تنصح به لفريق يقوم بأتمتة عمليات تثبيت --ignore-installed urllib3 ، ولكن هل هناك طريقة أكثر ملاءمة للقيام بذلك؟

أيضًا ، هل هناك أي احتمال أن تضيف التوزيعات ميزة إلغاء التثبيت أو المزيد من البيانات الوصفية؟ هل تحدثتم مع هذا الفريق عن هذا يا رفاق؟

@ روبي هو جميل رائع ليس لدي رأي حقيقي في ذلك. أنت تقول عن urllib3 "لأن Smart-open ثبته" ولكني لا أرى أي شيء في Smart-open يعلن الاعتماد على urllib3 ، لذلك لا أعرف ما تقصده بذلك. إذا كانت ميزة الفتح الذكي تقوم بطريقة ما بتثبيت urllib3 بطريقة تؤدي إلى حدوث هذه المشكلة ، فهذا يبدو وكأنه مشكلة ذكية مفتوحة.

أيضًا ، هل هناك أي احتمال أن تضيف التوزيعات ميزة إلغاء التثبيت أو المزيد من البيانات الوصفية؟ هل تحدثتم مع هذا الفريق عن هذا يا رفاق؟

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

لقد حاولت للتو تثبيت الفتح الذكي. يعتمد ذلك على الطلبات ، والتي بدورها تعتمد على urllib3. يتم تثبيت ذلك بشكل صحيح عن طريق النقطة عندما أقوم بالتثبيت في Virtualenv. هل تقوم بهذا التثبيت في بيئة نظام؟ في هذه الحالة ، هل ترى (وتحاول ترقية) النظام الذي قام بتثبيت urllib3؟ إذا كان الأمر كذلك ، فإن النصيحة العادية "لا تستخدم حزم النظام" - استخدم Virtualenv أو إذا كنت بحاجة إلى التثبيت في بيئة نظامك ، فاستخدم حزم التوزيعات.

أنا جديد تمامًا في عبوات Python ، لكن لدي شعور بأن حزم Virtualenv أو distro ستصلح مشكلتنا - سأضطر إلى النظر فيها أكثر. شكرا لك على مساعدتك!

هذا جنون. يتم كسر المنشآت بسبب بعض الإيمان الشبيه بالدين. إذا لامس إدخال بعض setup.py لبعض الحزم urllib3 ، فلا توجد طريقة لإخبارها بتجاهلها. في حالتنا ، يجب علينا ترقية urllib3 لأنه في Ubuntu 14 ، يرفض الإصدار المثبت من pip (v1.5.x) تثبيت الحزم من عناوين URL الخاصة بـ https.

النقطة المهمة هي أنه لن يقوم أحد بترقية حزم "النظام" إذا لم تتوقف عن العمل. في مشروع Linux kernel ، هذا السلوك "يكسر مساحة المستخدمين" ولا يتفاعل Torvalds بشكل جيد معه. إنه لأمر لا يصدق أن الناس الثعبان يأخذه بشكل طبيعي.

على الأقل يجب أن تحذر الأشخاص في رسائل pip بشيء مثل "هذا الإصدار من النقطة سيرفض العمل إذا كان ذلك يعني ترقية حزم النظام ، افعل ذلك وافعل ذلك. استخدم الإصدار 9 من pip إذا كنت تعمل مع المثبتات القديمة أو القديمة الأنظمة. " أو مشابه.

حسنًا ، لم أكن منتبهًا لأنني ما زالت مغمورة بالماء ، لكن وجهة نظري أكثر بساطة.
كان السبب الكامل لترقية userland بقوة هو: ATT & T و berkley كانوا لا يزالون يخففون من من بنى سلة المهملات ، بيرساي ... وإذا حصلت على الهراء لتثبيته على aha1542 ، فيمكنك التخلص من joilet's التي تم جرعاتها بسبب الترخيص ؛ وبما أن هذا حدث مؤخرًا أيضًا ، فهم سببوا قيامنا بهذا القرف في المقام الأول ؛ من أجل المسيح ، هو أن يكون لديك الخيارات والتعاون. ما زلت محيرًا إلى حد ما بسبب دخول Slackeware ومسار * bsd في deepend ، ولكن على أي حال ، حتى في معسكرين ، سيقود أحدهما الآخر ، سأشعر بالملل من kernel ، أعود إلى 2.x ، 16+ شاشة ، (لا يزال يتعين عليّ إعادة تعريف برنامج التشغيل promix في القائمة ، لكنني استطعت ، والآن عدت إلى جدول أعمالي المعتاد ، لا يمكننا الحصول على تطبيق WTF ، لذا فإن هذا الهراء يعمل في اليوم.

وأنا أتفق معpabloa - وقد كان هذا يحدث الآن إلى الأبد، الفانيليا تثبيت من سينت أو إس 7 لا يمكن تثبيت docker-compose لهذا السبب.

ونعم ، JohnBDonner ، هذا العلم الصغير وفر لي الكثير من الوقت. اشكرك

خطأ أولي

"لا يمكن إلغاء تثبيت 'pywin32'. إنه مشروع Distutils مثبت وبالتالي لا يمكننا تحديد الملفات التي تنتمي إليه بدقة مما يؤدي إلى إلغاء التثبيت الجزئي فقط"

كيف أصل إلى هناك؟

لقد تم تثبيت pywin32 == 221 في جهازي ، وأنا الآن أحاول إلغاء تثبيت إصدار ترقية منه (pywin == 224) ، حصلت على رابط إلى ".whl" الخاص به وأواجه تحديات لتثبيتها كما تلقيت الخطأ التالي "لا يمكن إلغاء تثبيت" pywin32 ". إنه مشروع distutils المثبت وبالتالي لا يمكننا تحديد الملفات التي تنتمي إليه بدقة مما يؤدي إلى إلغاء التثبيت الجزئي فقط. " . أنا على Window 10 64bit ، باستخدام py3.4 32bit.

لماذا أفعل هذا؟

لأنه يبدو أن "win32.client" في جهازي يحتوي فقط على "أمثل" ملف python ".pyo امتداد الملف". لقد اكتشفت هذا عندما أتلقى خطأ في التجميع يقول أنه ليس لدي وحدة "إرسال" متاحة لـ "من إرسال استيراد win32com.client". نقدر إذا كان أي شخص يمكن أن يساعدني في هذا.

أنت مجنون إخى؟؟

لا ، ولكن شكرا على الإساءة العشوائية. يجعل القيام بذلك في أوقات فراغي مجزيًا للغاية: ابتسم:

لم يكن الغرض منه حل المشكلة. كان القصد منه شرح سبب كون الأشياء على ما هي عليه ، ولماذا لا تستطيع النقطة حل المشكلة. فقط لأن الناس حزينون على الوضع لا يغيره.

هل من الممكن تغيير حزمة المثبت المستخدمة من قبل disyutils مثل ذلك
يتضمن البيانات الوصفية المطلوبة؟
يوم الخميس ، 22 نوفمبر 2018 الساعة 12:56 مساءً Paul Moore [email protected]
كتب:

لم يكن الغرض منه حل المشكلة. كان القصد من شرح السبب
الأشياء على ما هي عليه ، ولماذا لا تستطيع النقطة حل المشكلة. مجرد
لأن الناس حزينون على الوضع لا يغيره.

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441095536 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/ADrjCZvIpDr4X1sxcSZe3rRH7MBnn7Tsks5uxuVagaJpZM4TWMU4
.

>

نيك ارتمان
+1 (330) 558-1230

لا أعلم ، لا أعمل على التقطيع. ولكن حتى لو كان الأمر كذلك ، فلماذا يستخدم الناس المقطوعات هذه الأيام على أي حال؟ هذا الموضوع يدور حول الحزم التي تم تثبيتها بالفعل باستخدام التوزيعات. تم بالفعل ذكر الحل لتلك

AddoSolutions التغيير ذاته الذي setuptools

لذا السبب في أنني في هذا الموضوع هو أنني أعمل غالبًا مع الفانيليا
صناديق CentOS 7 وتحديدًا تركيب عامل الإرساء عليها. CentOS
يأتي مخزونًا بالنقطة والمشكلة هي أنني أحصل على هذه الأخطاء كما هو موضح
فوق.

أنا شخصياً لست من مستخدمي Python ، فأنا فقط أستخدم عامل إنشاء و
sshuttle على ذلك. أنا شخصيا ليس لدي أي فكرة عن الفرق بين setuptools
والتوزيعات ، أعتقد أن CentOS python مثبت بشكل أساسي
باستخدام yum عند التثبيت؟

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

أفكار؟

ملاحظة: أدرك تمامًا أنه يمكنني البحث في الاختلاف ، وربما سأفعل
ولكن طلب هذا للمستخدمين في المستقبل وهو أيضًا شكر وأريد
ديك رومى :)
يوم الخميس ، 22 نوفمبر 2018 الساعة 1:19 مساءً Ronny Pfannschmidt [email protected]
كتب:

AddoSolutions https://github.com/AddoSolutions نفس التغيير الذي تطلبه
ل يسمى setuptools

-
أنت تتلقى هذا لأنه تم ذكرك.

قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441099032 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/ADrjCTBfoKjBuYdceDeBM0bunByQ2bxJks5uxuq2gaJpZM4TWMU4
.

>

نيك ارتمان
+1 (330) 558-1230

كتب تحديثات حزمة yum - هذه إلى حد كبير مهمة التوزيع - ولم تكن تقوم بذلك ، ولكن لم يكن لدى الحزم نفسها في بعض الحالات

عندما يتعلق الأمر بتوزيعات المؤسسات - فالأشياء عفا عليها الزمن بشكل مؤلم - قم بفرزها مع البائع الخاص بك - لا تملك المصادر المفتوحة المصدر سلطة على ذلك ولا ينبغي أبدًا أن تتحمل عبء الدعم لاختيارك في توزيعات المؤسسة - لذا انتقل إلى البائع

مسكتك. لذا فإن حزمة النقطة في هذه الحالة سوف تحتفظ بها CentOS
المجموعة ، وليس من قبل مجموعة النقطة؟
يوم الخميس 22 نوفمبر 2018 الساعة 5:38 مساءً Ronny Pfannschmidt [email protected]
كتب:

كتب تحديثات حزمة yum - هذا إلى حد كبير مهمة
التوزيع - ولم يكن يفعل ذلك ، ولكن لم يكن لديه الحزم
أنفسهم في بعض الحالات

عندما يتعلق الأمر بتوزيعات المؤسسات - فالأشياء عفا عليها الزمن بشكل مؤلم -
قم بفرزها مع البائع الخاص بك - لا توجد سلطة للمصادر المفتوحة المصدر
هذا ويجب ألا يتحمل عبء الدعم لاختيارك في
توزيعات المؤسسة - لذا انتقل إلى البائع

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/pypa/pip/issues/5247#issuecomment-441129627 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/ADrjCZAQ-ZBmpkm7izyKkE0WymSoT6M1ks5uxyd2gaJpZM4TWMU4
.

>

نيك ارتمان
+1 (330) 558-1230

AddoSolutions ، المشكلة ليست نقطة ، ولكن هناك حزم أخرى - توقف Pip ببساطة عن الذرائع وأسقط الدعم للأشياء السيئة حقًا ، والآن تتفكك الأشياء على الجهات الفاعلة السيئة مثل توزيعات المؤسسة - لذلك عليك فرز الحزمة من حيث المؤسسة التوزيعات ومع البائع الخاص بك

فقط لمعلوماتك - من المحتمل أن يُطلب منك استخدام النقطة من النظام (الذي يديره البائع) وليس أحدث إصدار عشوائي

تلقيت هذا الخطأ مقابل wxPython

لا يمكن إلغاء تثبيت "wxPython". إنه مشروع مثبت على توزيعات التوزيع وبالتالي لا يمكننا تحديد الملفات التي تنتمي إليه بدقة مما سيؤدي إلى إلغاء التثبيت الجزئي فقط.

لم يكن موجودًا في sitepackages بل في distpackages (وهو أمر منطقي) ، ولكن لم يكن من الصواب حذف الملف من المجلد.

تبين أنني قمت بتثبيته عبر apt ، لذا فإن القيام بـ apt remove --autoremove python-wxgtk3.0 أزال الحزمة من نظامي.

هذه "ليست مشكلتنا ، شخص آخر يصلحها" أمر متوقع من النقطة. البرنامج لا يتظاهر حتى بإدارة تعارض الحزم. تلقيت هذه الرسالة كجزء من النشر الثابت للحاويات على العديد من الأنظمة.

شكرا لأولئك منكم الذين قدموا الحلول. لقد غيرت الطلب - "عامل تثبيت نقطة التثبيت" قبل "تثبيت نقطة - نقطة ترقية" - عملت هذه المرة. نأمل ألا يسبب هذا مشاكل (مثل تلف البيانات) في المستقبل.

قراءتي لهذا هو أننا يجب أن نستخدم البيئات الافتراضية لحماية أنفسنا من الغرابة في بيئاتنا ... ومع ذلك ، تمكنت من تجاوز هذا الآن عن طريق إضافة علامة --user :

pip3 install -r requirements.txt --user

https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption -user

يمكنك أيضًا محاولة العمل مع الإصدار الدقيق من التبعية العابرة التي تم تثبيتها بواسطة بيئتك / distutils لأنه يمكن أن يكون متوافقًا. في المثال الخاص بي ، سيقوم Pipenv بحل التبعية المؤقتة PyYAML من awscli==1.15.85 و apache-airflow==1.10.1 إلى 3.13 ، لكن النظام مثبت بالفعل 3.11. بالنظر إلى التبعيات المعلنة على جهاز التطوير المحلي الخاص بي ، سيكون 3.11 مناسبًا لكليهما:

$ pipenv graph | egrep 'airflow|awscli|PyYAML'
apache-airflow==1.10.1
    - PyYAML [required: >=3.0, installed: 3.13]
awscli==1.15.85
  - PyYAML [required: >=3.10,<=3.13, installed: 3.13]

سيؤدي pipenv install PyYAML==3.11 البسيط إلى تثبيت PyYAML عند 3.11 وسيسعد كلتا الحزمتين:

$ pipenv install PyYAML==3.11
Installing PyYAML==3.11…
...
Locking [packages] dependencies…
✔ Success!

$ pipenv graph | egrep 'airflow|awscli|PyYAML'
apache-airflow==1.10.1
    - PyYAML [required: >=3.0, installed: 3.11]
awscli==1.15.85
  - PyYAML [required: >=3.10,<=3.13, installed: 3.11]

يتم تثبيت Pipfile / Pipfile.lock الخاص بي لاحقًا بشكل نظيف على Ubuntu 14.04LTS باستخدام pipenv install --deploy --system .

لقد تحققت أيضًا من تثبيت PyYAML==3.11 خلال python3-yaml 3.11-3build1 وهو تبعية مباشرة لـ cloud-init 18.4-0ubuntu1 ~ 16.04.2 ، والتي نستخدمها على نطاق واسع أثناء تشغيلنا على EC2. يأتي كل من 18.04 LTS و 18.10 مع PyYAML 3.12 ، وسيأتي 19.04 فقط مع PyYAML ، والذي يعد أحدث إصدار اعتبارًا من اليوم.

ومع ذلك ، تجنب تبعيات النظام والقضايا البيئية بأي ثمن. استخدم pipenv و / أو virtualenv .

لقد استخدمت اتباع الخطوات وحل هذه المشكلة:

  1. نسخة مخفضة ،
    pip install --upgrade --force-reinstall pip==9.0.3
  2. حاولت إعادة تثبيت الحزمة
    pip install xxx --disable-pip-version-check
  3. أخيرًا ، قم باستعادة أحدث إصدار للنقطة
    pip install --upgrade pip

هذا عمل جيد بالنسبة لي لكن هل ترقية النقطة بعد ذلك تسبب أي مشاكل للحزم المثبتة ؟؟

@ s-eswar حتى الآن ، لم نعثر على مشاكل تتعلق بالحزمة ، ولكن ربما هناك حالة واحدة إذا استخدمت الإصدار العالي من حزمة تثبيت النقطة ، ثم استخدم الإصدار الأقل لإعادة التثبيت أو قد يحدث التحقق من مشكلة التبعية. أقترح أن تستخدم دائما نسخة أقل. على سبيل المثال ، النقطة 9.0.3.

@ s-eswar حتى الآن ، لم نعثر على مشكلة تتعلق بالحزم ، ولكن ربما تحدث مشكلة تبعية إذا استخدمت الإصدار العالي من حزمة تثبيت pip ، واستخدمت إعادة التثبيت أو التحقق من الإصدار الأقل. أقترح أن تستخدم دائما نسخة أقل. على سبيل المثال ، النقطة 9.0.3.

@ wangxf1987 ولكن لاستخدام مكتبات ML بنفس التكوين ، لا نحصل على أخطاء تتعلق بترقية / استخدام إصدار أقل.

@ s-eswar لست متأكدًا من مكتبات ML ما إذا كان المحافظ يعمل تحت إصدار أقل. أنا أستخدم النقطة = 9.0.3 وسوف يعمل مع أحدث إصدار من Kubernetes. يجب أن يتم التحقق من ملف المتطلبات سواء كنت بحاجة إلى أحدث إصدار من النقطة أو اختبارها في بيئة التطوير.

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

أعتقد أن الجزء "الآن نبلغ المستخدم بالمشكلة" يسمى "دفع دينك التكنولوجي إلى شخص آخر". أود أن أشكر الجميع على جلبهم لي إلى الفشل الذريع. خاصة وأنني لست مطور Python وليس لدي أي فكرة عن كيفية إصلاحها. أحصل على ساعات wates حول هذه المشكلة الآن. الصيحة!

قم بإزالة حزمة Dist و RUN

sudo rm -rf /usr/lib/python3/dist-packages/yaml

sudo rm -rf /usr/lib/python3/dist-packages/PyYAML-*

إزالة المجلد من أعمال التقطيع

بالترقية إلى الإصدار الأحدث يجب أن تحل المشاكل ولكن النقطة تقدم مشاكل يا لها من مفارقة.

الحل هو إلغاء تثبيته يدويًا ، لذا انتقل إلى ... / anaconda3 / lib / python3. * / site -pack / وحذف جميع ملفات ومجلدات الحزمة

ramonamis sudo pip install --ignore-installed PyYAML

هذا بنجاح ترقيته بالنسبة لي.

يعمل هذا أيضًا مع imutils:

تثبيت نقطة - imutils الترقية - imutils المثبتة أقل من

لقد استخدمت اتباع الخطوات وحل هذه المشكلة

  1. نسخة مخفضة:
    pip install --upgrade --force-reinstall pip==9.0.3
  2. حاولت إعادة تثبيت الحزمة:
    pip install xxx --disable-pip-version-check
  3. أخيرًا ، قم باستعادة أحدث إصدار للنقطة:
    pip install --upgrade pip

إنه يعمل معي , شكرا!

لقد استخدمت اتباع الخطوات وحل هذه المشكلة

1. Reduced version:
   `pip install --upgrade --force-reinstall pip==9.0.3`

2. Tried to re-install package:
   `pip install xxx --disable-pip-version-check`

3. At last, recover the latest version for pip:
   `pip install --upgrade pip`

هذا حل سيء. لا أستطيع فعل أي شيء الآن.

Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-pip : Depends: python-pip-whl (= 9.0.1-2.3~ubuntu1) but 9.0.1-2.3~ubuntu1.18.04.1 is to be installed
               Recommends: python3-dev (>= 3.2) but it is not going to be installed
               Recommends: python3-setuptools but it is not going to be installed
               Recommends: python3-wheel but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
E: Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/bin/snap advise-snap --from-apt 2>/dev/null || true: Success

أنا أقفل هذا الموضوع الآن. يغطي تعليق pfmoore الأولي كل شيء هنا. تم الكشف عن بقية هذا الموضوع إلى طلبات دعم أو إساءة استخدام مباشرة موجهة إلى القائمين على الصيانة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات