Pip: بعد ترقية النقطة 10 على pyenv "خطأ في الاستيراد: لا يمكن استيراد الاسم 'main'"

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

ملاحظة من المشرف: أي شخص لا يزال يعاني من هذه المشكلة ، يرجى الاطلاع على # 5599.


  • إصدار النقطة: 10.0
  • إصدار Python: 3.6.2
  • نظام التشغيل: أوبونتو 16.04

وصف:

بعد ترقية النقطة من 9.03 إلى 10.0 عبر pip install pip --user --upgrade في نقاط بيئة pyenv لبدء ورفع هذا بدلاً من ذلك:

Traceback (most recent call last):
  File "/home/kleinernull/.pyenv/versions/3.6.2/bin/pip", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'
Traceback (most recent call last):
  File "/home/kleinernull/.pyenv/versions/3.6.2/bin/pip", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'

محتوى ملفات Pip الثلاثة المختلفة هو نفسه:

~ ⟩ cat .pyenv/versions/3.6.2/bin/pip                                                                            ~
#!/home/kleinernull/.pyenv/versions/3.6.2/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main as _main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(_main())

~ ⟩ cat .pyenv/versions/3.6.2/bin/pip3                                                                           ~
#!/home/kleinernull/.pyenv/versions/3.6.2/bin/python3.6


# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

~ ⟩ cat .pyenv/versions/3.6.2/bin/pip3.6                                                                         ~
#!/home/kleinernull/.pyenv/versions/3.6.2/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

حدث الشيء نفسه مع بيئتي 3.6.1 أيضًا.

إصلاح مؤقت

وفقًا لرمز الفرع الرئيسي ، يجب أن يكون الاستيراد كما يلي:

#!/home/kleinernull/.pyenv/versions/3.6.2/bin/python3.6

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main as _main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(_main())

وهذا يحل المشكلة. ليس لدي أي فكرة عما إذا كان هذا له علاقة بالترقية نفسها أو مع pyenv كبيئة.

duplicate

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

كان الإصلاح بالنسبة لنا مثبتًا على النقطة 9.03 ، لذلك:

pip install --upgrade pip==9.0.3

بدلا من

pip install -U pip

إصلاح واضح ولكن في حالة أنه يساعد شخصًا آخر!

ال 68 كومينتر

ياKleinerNull!

ليس لدي أي فكرة عما إذا كان هذا له علاقة بالترقية نفسها أو مع pyenv كبيئة.

أعتقد أن هذه قضية بيئية. أقترح عليك فتح مشكلة في pyenv لأنني أعتقد أن الأشخاص هناك سيكونون في وضع أفضل للتعليق على هذا / إصلاحه.

تضمين التغريدة

فتحت مشكلة في pyenv repo.

نحن نعاني من هذا أيضًا ، لقد تم كسر خط الأنابيب لدينا. العملية قيد التشغيل:

 11 #upgrade pip and install uwsgi
 12 pip install --user --upgrade pip
 13 pip install uwsgi

نظام التشغيل Ubuntu 16.04.0
بايثون 3.6

نحن نواجه نفس المشكلة.

// in host
$ docker pull ubuntu:xenial
$ docker run --name pip-test --rm -it ubuntu:xenial bash

// in container
# apt update
# apt install -y python-dev python-pip
# pip install --upgrade pip
Collecting pip
  Downloading pip-10.0.0-py2.py3-none-any.whl (1.3MB)
    100% |################################| 1.3MB 865kB/s 
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-10.0.0
# pip install requests
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

نفس الشيء هنا .. نفس الإخراج تمامًا مثل HayaoSuzuki ولا نستخدم pyenv

إذا كنت تحصل على هذا خارج pyenv ، أظن أنه من المرجح أن يكون مرتبطًا بـ # 5221

فقط لذكر أن pip install --user --upgrade pip على Ubuntu 16.04 ينكسر أيضًا.

من المثير للاهتمام تثبيت نقطة التثبيت 10.0.0 ولكن لا تظهر المشكلة
""
// في المضيف
سحب عامل الميناء $ أوبونتو: زينيل
$ Docker run --name pip-test --rm -it ubuntu: xenial bash

// في الحاوية

تحديث مناسب

تثبيت apt -y python-setuptools

easy_install نقطة

مثبت /usr/local/lib/python2.7/dist-packages/pip-10.0.0-py2.7.egg
تبعيات المعالجة للنقطة
تبعيات المعالجة النهائية للنقطة

طلبات تثبيت النقطة

جمع الطلبات
طلبات التنزيل-2.18.4-py2.py3-none-any.whl (88 كيلوبايت)
100٪ | ################################## | 92 كيلو بايت 2.9 ميغا بايت / ثانية
تحصيل الشهادة> = 2017.4.17 (من الطلبات)
تحميل certifi-2018.1.18-py2.py3-none-any.whl (151kB)
100٪ | ################################## | 153 كيلوبايت 4.4 ميجابايت / ثانية
جمع chardet <3.1.0،> = 3.0.2 (من الطلبات)
تحميل chardet-3.0.4-py2.py3-none-any.whl (133kB)
100٪ | ################################## | 143 كيلو بايت 4.5 ميجا بايت / ثانية
جمع idna <2.7،> = 2.5 (من الطلبات)
تحميل idna-2.6-py2.py3-none-any.whl (56kB)
100٪ | ################################## | 61 كيلوبايت 7.4 ميجابايت / ثانية
جمع urllib3 <1.23،> = 1.21.1 (من الطلبات)
تحميل urllib3-1.22-py2.py3-none-any.whl (132kB)
100٪ | ################################## | 133 كيلو بايت 4.4 ميجابايت / ثانية
تثبيت الحزم المجمعة: certifi، chardet، idna، urllib3، request
تم تثبيت Certifi-2018.1.18 chardet-3.0.4 idna-2.6 طلبات-2.18.4 urllib3-1.22
""

وهذا ليس مفاجئًا ، نظرًا لأن هذه النقطة مثبتة في مكان مختلف ، وبالتالي لم تعد تؤثر على النقطة العالمية - فهذا يعني أيضًا أن لديك الآن مجموعة عمل مثيرة جدًا للاهتمام للبيثون

بينما أقدر أن المشكلة الأساسية التي تم الإبلاغ عنها هنا وفي https://github.com/pypa/pip/issues/5221 هي البيئة ، فإن السبب في المقام الأول هو أن الاستيراد from pip import main تم كسره باعتباره الحزمة pip.main تم نقل pip._internal.main . سيكون من التافه إضافة ارتباط من pip.main إلى pip._internal.main لإصلاح ذلك (في حين أن إصلاح البيئة يتطلب الكثير من العمل عبر العديد من المواقع للعديد من الأشخاص). هل هناك سبب وجيه لعدم القيام بذلك؟

تضمين التغريدة

يقدم هذا التعليق بعض المعلومات حول عدم القيام بذلك ، لكنني لست متأكدًا تمامًا مما إذا كان هذا مهمًا أيضًا لنص النقطة نفسه. ومع ذلك ، فقد حل المشكلة بالنسبة لي.

davidjlloyd لأن from pip import main لم يتم دعمه أبدًا ، بشكل أساسي. وعلى الرغم من أنه من السهل أن تقول "نعم ، لكنها واجهة برمجة تطبيقات بسيطة وقد نجحت للتو" ، إلا أنها لم تفعل - لقد تلقينا تقارير أخطاء متعددة من أشخاص يتوقعون سلوكيات معينة منها ، ولا نلبيها ببساطة ( تشغيل pip.main في سلاسل محادثات متعددة ، مع توقع عدم تغيير pip.main تكوين نظام التسجيل ، ...)

بدلاً من الاستمرار في الشرح للأشخاص أنه لا ينبغي لهم القيام بذلك ، والتعامل المستمر مع حقيقة أن الأشخاص يفترضون أنه "إذا كان بإمكاني العثور على وظيفة للاتصال بها ، فقد تم دعمها" نقلنا كل شيء إلى مساحة الاسم _internal إلى أوضح تمامًا أنه ليس من المفترض أن تسميها.

جاء الجزء الأكبر من الشكاوى من أشخاص يستخدمون pip.main - وهو أمر مثير للسخرية ، لأنه من السهل جدًا الاتصال بالنقطة في طريقة سطر الأوامر المدعوم عبر subprocess . لذلك من بين جميع الأعطال المحتملة ، هذا هو الأسهل لإصلاحه - ومع ذلك لم يتم إصلاحه حتى الآن ، حتى بعد شهور من التحذيرات. (على الرغم من أن توزيعات Linux تكون عادلة ، إلا أنها لا تدعم الأشخاص الذين يقومون بترقية حزم النظام الخاصة بهم باستخدام pip ، لذا فإن التقارير مثل # 5221 من الحالات التي تعطل فيها البرامج النصية المزودة بالتوزيع هي خطأ مستخدم بشكل أساسي ، وليس فشل التوزيعات في معالجة النقطة 10 تغييرات - شيء أنا متأكد من أنهم يتعاملون معه بشكل جيد).

يمكنني أيضًا أن أؤكد أن هذه المشكلة تدمر تمامًا عمليتي المستقرة جدًا سابقًا لبناء صورة عامل إرساء ، وإليك أمثلة على الحد الأدنى من الأشياء التي أفعلها داخل عملية إنشاء صورة عامل الإرساء:

+ pip install -U pip setuptools
Collecting pip
  Downloading https://files.pythonhosted.org/packages/62/a1/0d452b6901b0157a0134fd27ba89bf95a857fbda64ba52e1ca2cf61d8412/pip-10.0.0-py2.py3-none-any.whl (1.3MB)
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/20/d7/04a0b689d3035143e2ff288f4b9ee4bf6ed80585cc121c90bfd85a1a8c2e/setuptools-39.0.1-py2.py3-none-any.whl (569kB)
Installing collected packages: pip, setuptools
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-10.0.0 setuptools-39.0.1

...

+ pip install jupyter opencv-python plyfile pandas
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

كان الإصلاح بالنسبة لنا مثبتًا على النقطة 9.03 ، لذلك:

pip install --upgrade pip==9.0.3

بدلا من

pip install -U pip

إصلاح واضح ولكن في حالة أنه يساعد شخصًا آخر!

peteflorence لذا من المفترض عند تشغيل عامل الإرساء ، أنك تنشئ صورة أساسية ، ثم تقوم بتشغيل pip install -U pip setuptools كجذر في تلك الصورة؟ هل هناك سبب يجعلك تحتاج إلى أحدث أدوات pip / setuptools إذا كان كل ما تفعله هو تثبيت حزم أخرى معهم؟ ألا يمكنك ببساطة الترقية إلى أحدث أدوات النقطة / أدوات الإعداد المتاحة كحزمة توزيع؟

أقدر أن هذه مشكلة بالنسبة لك - يبدو أنه من الشائع أن تكون هياكل عامل الإرساء أكثر ميلًا للقيام بالأشياء كجذر مما لو كنت تعمل في نظام تشغيل عادي (ربما لأن صورة عامل الإرساء معزولة). لكن لا يزال القيام بذلك ليس فكرة جيدة. المشكلة هي أن النقطة لا تدير /usr/bin/pip ، لذلك ليس لدينا طريقة "لإصلاح" ذلك للعمل مع النقطة 10.

ما يمكنك فعله هو التبديل من استخدام /usr/bin/pip إلى استخدام python -m pip . لا يزال غير مدعوم ، وقد يواجه مشكلات أخرى (لا أعرف التغييرات التي ربما أجراها بائع نظام التشغيل الأساسي الخاص بك على نقطة النظام) ولكنه سيتجنب المشكلة في /usr/bin/pip أثناء قيامك بفرز فترة أطول- مصطلح حل لمشكلتك.

يعتبر التثبيت بالنقطة 9 حلاً أيضًا ، ولكن هذا يطرح السؤال ، لماذا تقوم بترقية نقطة نظام التشغيل لديك على الإطلاق إذا كانت النقطة 9 على ما يرام؟ هل لا يقدم البائع الذي تتعامل معه نسخة مجمعة من النقطة 9؟

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

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

بالنسبة لأي مستخدم يواجه هذه المشكلة ، أعتقد أن أفضل حل لاستبدال تثبيتات النظام أو pyenv تم توفيره من خلال standag هنا: https://github.com/pypa/pip/issues/5221#issuecomment -381568428

يجب أن يعمل هذا الحل مع أي شخص يقوم بالبناء في Docker مثل peteflorence دون تثبيت الإصدارات القديمة أو أي شيء فظيع من هذا القبيل.

نقطة ترقية الإصلاح المؤقت باستخدام.

curl https://bootstrap.pypa.io/get-pip.py | python3

بدلاً من pip install -U pip

للنقطة pip2 install --upgrade pip

قمت بالترقية باستخدام pyenv ، كل من python2 و python3 ، والآن لا يعمل pip2 ويعمل pip3
بعد مقارنة النقطة 2 والنقطة 3 ، يكون الفرق هو خط الاستيراد

نقطة 2
from pip import main

نقطة 3
from pip._internal import main

بعد استبدال خط استيراد pip2 بإصدار pip3 ، فإنه يعمل

وجود نفس المشكلة ، هيه.

نفس المشكلة ، ولكن تم حلها بالحل: https://github.com/pypa/pip/issues/5240#issuecomment -381673100

المشكلة نفسها:

+ pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/62/a1/0d452b6901b0157a0134fd27ba89bf95a857fbda64ba52e1ca2cf61d8412/pip-10.0.0-py2.py3-none-any.whl
 (1.3MB)
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-10.0.0
+ pip install awscli requests simplejson
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

الآن أصبح الأمر غريبًا ، فهو يقوم بتثبيت النقطة 10 على / usr / local / bin ، وهذا أولاً في PATH قبل / usr / bin ، لكنه لا يستخدمه ، ليس حتى تذهب إلى قذيفة جديدة. لقد رأيت هذا يحدث عندما ذهبت إلى هذا الصندوق لمحاولة تثبيت أوسكلي أحدث يدويًا ...

$ python --version
Python 2.7.12
$ pip --version
pip 10.0.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
$ sudo pip install --upgrade awscli 
 <blah blah>
$ aws --version
aws-cli/1.11.13 Python/3.5.2 Linux/4.4.0-1049-aws botocore/1.4.70
$ /usr/local/bin/aws --version
aws-cli/1.15.4 Python/2.7.12 Linux/4.4.0-1049-aws botocore/1.10.4
$ which aws
/usr/local/bin/aws
$ echo $PATH
/home/ec2-user/bin:/home/ec2-user/.local/bin:/opt/bamboo-elastic-agent/bin:/opt/jdk-8/bin:/opt/maven-2.1/bin:/opt/maven-1.0.2/bin:/opt/ant-1.9/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/bin:/bin:/opt/puppetlabs/bin

pfmoore شكرا على التعليقات. نعم ، يبدو أن صورة عامل الإرساء الخاص بنا بحاجة إلى نقطة 9 ونحن نرث من صورة عامل تشغيل nvidia cuda 8.0 ومجموعة من الأشياء الأخرى التي لا يجب أن تكون موجودة. التثبيت هو حل جيد بالنسبة لنا - هذا نظام بحث ، نريد أن يكون الكود مغلقًا بشكل معقول. لكن نعم ، من الواضح بالنسبة للعديد من الأشخاص الآخرين أنك تريد حلاً يجعلك تتوافق مع النقطة 10

الآن أصبح الأمر غريبًا ، فهو يقوم بتثبيت النقطة 10 على / usr / local / bin

أنا لست من مستخدمي يونكس ، لكني أتذكر رؤية بعض الناس يتحدثون عن "إعادة صياغة" في الغلاف؟ يمكن أن تكون هذه القضية؟ هل عمليات البحث عن مسار ذاكرة التخزين المؤقت bash وتحتاج إلى مطالبة لإعادة البحث عن المسار؟

نعم ، يبدو أن صورة عامل الإرساء لدينا بحاجة إلى نقطة 9 ...

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

لقد ثبتنا على النقطة 9 وهذا "أصلحنا" ، لكننا بالطبع مهتمون بالقدرة على استخدام النقطة 10 في مرحلة ما.

حاول استخدام pip2 قم بتثبيت xxHayaoSuzuki

كيفية العودة إلى النقطة 9.0.0 ..
لا يزال يظهر لي نفس الخطأ. الرجاء كتابة جميع الخطوات

@ swtt123 يمكنك تجربة pip install pip==9.0.1

نقطة 10.0 ، أواجه أيضًا

AttributeError: 'module' object has no attribute 'main'

أثناء محاولة استخدام pip.main(['install', '-r', 'requirements.txt'])

@ p00j4 استيراد النقطة من برنامجك غير مدعوم - راجع المستندات

أوه! أحصل عليه ومع ذلك ، الآن أجبرت على تغيير الكثير من الأماكن.
شكرا pfmoore للرأس.

احترس من bash التخزين المؤقت للموقع القابل للتنفيذ:

$ which pip
/usr/bin/pip

$ pip install --user pip
Collecting pip
(...)
Successfully installed pip-10.0.0

$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

$ which pip
/usr/bin/pip

$ hash -d pip  # this clears the 'pip' entry from bash's executables locations hash table

$ which pip
/home/zwinny/.local/bin/pip

$ pip --version
pip 10.0.0 from /home/zwinny/.local/lib/python2.7/site-packages/pip (python 2.7)

لقد قمت بإنشاء تثبيت Raspbian جديد على Raspberry Pi 3B +. لا يوجد شيء مميز - تكوين الفانيليا الجميل - وحتى الآن ، سار كل شيء على ما يرام.

لقد وصلت للتو إلى الخطوة الأخيرة في عملية التثبيت الخاصة بي:

pip install --upgrade pip

Collecting pip
  Downloading https://files.pythonhosted.org/packages/62/a1/0d452b6901b0157a0134fd27ba89bf95a857fbda64ba52e1ca2cf61d8412/pip-10.0.0-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 101kB/s 
Installing collected packages: pip
Successfully installed pip-10.0.0

... والآن أصبحت النقطة ممتلئة تمامًا:

$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

وفقًا للتعليق أعلاه ، لقد أكدت أن ~ i / .local / bin / pip يعمل بشكل جيد. حدث الخطأ مع / usr / bin / pip. لا يؤدي تشغيل نقطة التجزئة إلى تحديث الموقع المخزن مؤقتًا ، على الرغم من ذلك.

لم يؤدِ خفض مستوى الإصدار إلى 9.0.1 (عبر سطر الخيارات -Iv و- فرض-إعادة التثبيت) أيضًا إلى حل المشكلة. على ما يبدو ، فإن الحل الوحيد ، إلى جانب عدم ترقية النقطة ، هو تشغيل النقطة من ~ / .local / bin / pip.

python -m pip install --upgrade pip 

عملت من أجلي. وآمل أن يساعد شخص ما.

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

لا أحد من الحلول هنا يصلح مشكلتي. إذا قمت بتشغيل python -m pip install --upgrade pip فسوف أحصل على "المتطلبات محدثة بالفعل". إذا حاولت الرجوع إلى الإصدار 9 ، فسأحصل على نفس الخطأ الأولي:

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

بعد إعادة قراءة هذا الموضوع ، نجح حل sfsdfd لاستخدام ~/.local/bin/pip :

~/.local/bin/pip install my-favourite-package

يبدو أن هذا يعمل عن طريق (بنجاح) العودة إلى الإصدار القديم من النقطة. إضافة هذا إلى ~/.bashrc هو حل أفضل بالنسبة لي:

export PATH=$PATH:~/.local/bin

ما عليك سوى إعادة تشغيل الجهاز الطرفي لإصلاحه بالنسبة لي.

لقد أصلحت المشكلة عن طريق تحديث الكود في /usr/bin/pip ، وتغيير from pip import main إلى from pip._internal import main .

هنا التفاصيل:

$ dpkg -S /usr/bin/pip
python-pip: /usr/bin/pip
$ dpkg -S /usr/bin/pip2
python-pip: /usr/bin/pip2
$ apt-file search /usr/bin/pip
colorized-logs: /usr/bin/pipetty
pipebench: /usr/bin/pipebench
pipemeter: /usr/bin/pipemeter
pipexec: /usr/bin/pipexec
python-pip: /usr/bin/pip
python-pip: /usr/bin/pip2
python3-pip: /usr/bin/pip3
rt-tests: /usr/bin/pip_stress

بعد pip install --upgrade pip :

$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main
$ pip2
Traceback (most recent call last):
  File "/usr/bin/pip2", line 9, in <module>
    from pip import main
ImportError: cannot import name main

$ cat /usr/bin/pip
#!/usr/bin/python
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

بعد تحديث /usr/bin/pip :

$ cat /usr/bin/pip
#!/usr/bin/python
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
# from pip import main
from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

$ pip --version
pip 10.0.0 from /home/devops/.local/lib/python2.7/site-packages/pip (python 2.7)

$ pip2
Traceback (most recent call last):
  File "/usr/bin/pip2", line 9, in <module>
    from pip import main
ImportError: cannot import name main

معلومات نظامي:

$ uname -a
Linux devops-kubernetes-master 4.13.0-38-generic #43-Ubuntu SMP Wed Mar 14 15:20:44 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"
NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 17.10"
VERSION_ID="17.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=artful
UBUNTU_CODENAME=artful

$ python --version
Python 2.7.14

$ apt list --installed | grep python-

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libpython-all-dev/artful,now 2.7.14-2ubuntu1 amd64 [installed]
libpython-dev/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
libpython-stdlib/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
python-all/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
python-all-dev/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
python-apt-common/artful,artful,now 1.4.0~beta3build2 all [installed]
python-asn1crypto/artful,artful,now 0.22.0-1 all [installed,automatic]
python-cffi-backend/artful,now 1.9.1-2build2 amd64 [installed,automatic]
python-crypto/artful-updates,artful-security,now 2.6.1-7ubuntu0.1 amd64 [installed,automatic]
python-cryptography/artful,now 1.9-1 amd64 [installed,automatic]
python-dbus/artful,now 1.2.4-1build3 amd64 [installed,automatic]
python-dev/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
python-enum34/artful,artful,now 1.1.6-1 all [installed,automatic]
python-gi/artful,now 3.24.1-2build1 amd64 [installed,automatic]
python-idna/artful,artful,now 2.5-1 all [installed,automatic]
python-ipaddress/artful,artful,now 1.0.17-1 all [installed,automatic]
python-keyring/artful,artful,now 10.4.0-1 all [installed,automatic]
python-keyrings.alt/artful,artful,now 2.2-2 all [installed,automatic]
python-minimal/artful,now 2.7.14-2ubuntu1 amd64 [installed,automatic]
python-pip/artful,artful,now 9.0.1-2 all [installed]
python-pip-whl/artful,artful,now 9.0.1-2 all [installed,automatic]
python-pkg-resources/artful,artful,now 36.2.7-2 all [installed,automatic]
python-secretstorage/artful,artful,now 2.3.1-2 all [installed,automatic]
python-setuptools/artful,artful,now 36.2.7-2 all [installed,automatic]
python-setuptools-doc/artful,artful,now 36.2.7-2 all [installed]
python-six/artful,artful,now 1.10.0-4 all [installed,automatic]
python-talloc/artful,now 2.1.9-2ubuntu1 amd64 [installed]
python-wheel/artful,artful,now 0.29.0-2 all [installed,automatic]
python-xdg/artful,artful,now 0.25-4 all [installed,automatic]

أصلحت بهذه الطريقة:

$ نقطة - الإصدار
Traceback (آخر مكالمة أخيرة):
ملف "/ usr / bin / pip" ، السطر 9 ، في
من استيراد النقطة الرئيسية
خطأ في الاستيراد: لا يمكن استيراد الاسم الرئيسي
sudo apt-get remove python-pip
sudo apt-get install python-pip
$ نقطة - الإصدار
نقطة 10.0.0 من / home/user/.local/lib/python2.7/site-packages/pip (python 2.7)

وآمل أن يساعد شخص ما.

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

sudo apt-get remove python-pip
$ نقطة -v
bash: / usr / bin / pip: لا يوجد مثل هذا الملف أو الدليل

لكن عندما أحاول هذا$ python -m pip -Vنقطة 10.0.0 من / home/user/.local/lib/python2.7/site-packages/pip (python 2.7)

لذلك قمت بإزالة مجلد النقطة الكامل
sudo rm -r /home/user/.local/lib/python2.7/site-packages/pip*

ثم مرة أخرى أحاول هذا
$ python -m pip -V
/ usr / bin / pip: لا توجد وحدة باسم النقطة

ثم قم بتثبيت النقطة مرة أخرى
sudo apt install python-pip
$ python -m pip -V
نقطة 8.1.1 من حزم usr / lib / python2.7 / dist (python 2.7)

أتمنى هذا يصلح المشكلة

بعد إهدار 3 ساعات هذا ما حصلت عليه

لإلغاء التثبيت 10.0.0 نقطة:
sudo apt-get remove python-pip

ولكن بعد ذلك لن تتمكن من تثبيت الإصدار الصحيح المطلوب من النقطة بالطرق المباشرة.

للانتقال إلى إصدار عمل معروف بعد التثبيت
عندما تلقي pip10 الخطأ: خطأ استيراد: لا يمكن استيراد الاسم الرئيسي
سيكون عليك الجري:
تثبيت نقطة python -m pip == KNOW_WORKING_VERSION>

لتثبيت أي حزمة باستخدام PIP10:
تثبيت sudo python -m pip PACKAGE_NAME
هذا عمل.

هتافات :)

نفس المشكلة ، حل المشكلة: إعادة التثبيت الكامل: python-pip

فقط قم بإعادة تسجيل الدخول كما هو مذكور هنا
https://github.com/pypa/pip/issues/5240#issuecomment -382262586

pip3 install --upgrade pip==9.0.3
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'

هيه ... ماذا فعلت إلا ...

لقد قمت للتو بفك تثبيت النقطة الخاصة بي.
python -m pip install --user --upgrade pip==9.0.3

أردت الإبلاغ عن حدوث هذه المشكلة أيضًا في إصدار Windows عند استخدام AppVeyor لـ CI:
والنتيجة هي ما يلي:

Running Install scripts
SET PATH=%PYTHON%;%PYTHON%\Scripts;%PATH%
pip install --disable-pip-version-check --user --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB)
Installing collected packages: pip
Successfully installed pip-10.0.1
pip install -U setuptools
Traceback (most recent call last):
  File "c:\python27-x64\lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27-x64\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27-x64\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main
Command exited with code 1

لدي: pip install --disable-pip-version-check --user --upgrade pip في عدة نصوص appveyor.yml ، بناءً على توصية من هذا النموذج: https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor.yml # L111

لقد نجح هذا الأمر جيدًا حتى النقطة 10.x ، وأظن أنه إذا قام الآخرون بإنشاء appveyor.yml بناءً على ذلك ، فسوف يواجهون هذه المشكلة أيضًا.

لقد نجح التبديل إلى easy_install -U pip ، لكن لدي العديد من عمليات إعادة الشراء التي كانت تعمل قبل ذلك الآن بحاجة إلى التحديث للعمل مع النقطة 10.x.

يبدو أن النهج الموصى به لإعداد CI يجب أن يكون متمسكًا بـ 9.0.3 أو باستخدام easy_install.

يبدو أن النهج الموصى به لإعداد CI يجب أن يكون متمسكًا بـ 9.0.3 أو باستخدام easy_install.

النهج الموصى به هو إزالة تبعية مكتبتك / تطبيقك / أداتك من تفاصيل التنفيذ الداخلي لـ Pip. easy_install لم يعد يتم تحسينه بشكل نشط من AFAIK ومن المحتمل أنه لا يدعم الكثير من الأشياء التي تقوم بها النقطة.

بالنسبة إلى مشكلتك المحددة ، يمكنك على الأرجح إصلاحها عن طريق تشغيل python -m pip install --force-reinstall pip لإصلاح البرنامج النصي المعطل. إذا لم يكن كذلك ، يرجى تقديم قضية جديدة.

النهج الموصى به هو إزالة تبعية مكتبتك / تطبيقك / أداتك من تفاصيل التنفيذ الداخلي لـ Pip. easy_install لم يعد يتم تحسينه بشكل نشط من AFAIK ومن المحتمل أنه لا يدعم الكثير من الأشياء التي تقوم بها النقطة.

أظن أنك لم تقرأ بقية منشوره. كان يشير إلى استخدام easy_install لتثبيت النقطة ، وليس بدلاً من النقطة:

التبديل إلى easy_install -U عمل نقطة ...

كما أنه لا يعتمد على تفاصيل التنفيذ الداخلية لـ PIP. إنه يستخدم إصدارًا جديدًا من AppVeyor ويقوم بترقية النقطة باستخدام الأمر الذي حدده ، ولا شيء أكثر من ذلك:

تثبيت نقطة - تعطيل - فحص - إصدار - مستخدم - نقطة ترقية

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

ikreymer المشكلة التي يبدو أنك تشير إليها موجودة في Appveyor ، الذي يقوم بتشغيل Windows. القضية التي تتم مناقشتها هنا تتعلق بـ pyenv وهي أداة مساعدة حصرية لـ Unix.

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

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

arvoelke :

كان يشير إلى استخدام easy_install لتثبيت النقطة ، وليس بدلاً من النقطة

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

يعاني العديد من الأشخاص الآخرين في هذا الموضوع من نفس المشكلة

حدد "نفس". إذا كنت تقصد "رؤية أخطاء من التعليمات البرمجية التي تستورد pip.main ثم نعم ، ولكن هذه ليست مشكلة بالنقطة ، إنها تغيير متعمد وغير متوافق مع النقطة إلى التنفيذ الداخلي للنقطة. إذا كنت تريد منا أن نقول فقط" صعبًا ، لا يجب عليك استخدام واجهات برمجة التطبيقات الداخلية للنقطة "، ثم حسنًا - هناك مشكلة واحدة كافية ، وسنغلقها على أنها" ليست خطأ ". ولكن إذا كنت تريد منا مساعدتك في معرفة ما فشل جزء من بيئتك في اتباع النصائح المنشورة منذ 6 أشهر ، وإيجاد حل بديل لك يتيح لك الاستمرار في استخدام النقطة بينما يتم إصلاح بيئتك من قبل البائع ، ثم يتعين عليك مساعدتنا لمساعدتك. و إن قول "لدي نفس المشكلة" في تقرير حول أداة مساعدة خالصة من Unix ، عندما تعمل على Windows ، لا يساعدنا بالتأكيد على مساعدتك ...

القضية التي تتم مناقشتها هنا تتعلق بـ pyenv وهي أداة مساعدة حصرية لـ Unix.

كان أحد الردود الأولى على هذا الموضوع هو:

نفس الشيء هنا .. نفس الإخراج تمامًا مثل HayaoSuzuki ولا نستخدم pyenv

يبدو جانب pyenv ثانويًا إلى حد ما بناءً على التعليقات المذكورة أعلاه والمشكلات والالتزامات المرتبطة ، بما في ذلك تلك التي تحدث عند التثبيتات الجديدة لـ Ubuntu و RaspberryPi. مرة أخرى كل هذا هو بالفعل جزء من هذه المشكلة. السبب الأساسي هو "نفسه" (على سبيل المثال ، ترقية النقطة ثم محاولة إطلاقها) للجميع ، بما في ذلك OP ، وبالتالي يمكننا إنشاء المزيد من المشكلات ولكن لا يوجد أي شيء مختلف يحدث بينهما - فقط في كيف تظهر القضية.

وقولك "لدي نفس المشكلة" في تقرير عن أداة يونكس المساعدة البحتة ، عندما تعمل على Windows ، لا يساعدنا بالتأكيد على مساعدتك ...

أنا لا أعمل على Windows. أنا أركض على Ubuntu كما قلت من قبل. الملصق الآخر يستخدم Windows ، لكنهم ببساطة يقومون بترقية pip و run pip ، تمامًا مثل بقيتنا في هذه المشكلة. هناك إجماع شائع على أن استخدام pyenv ليس أساسيًا لهذه المشكلة.

يبدو أن كل هذه المشكلات تنبع من نفس المشكلة: ترقية النقطة ، مع الاستمرار في استخدام قاذفة قديمة لا تزال تستخدم نقطة الإدخال القديمة. من الطرق الجيدة لتجنب هذا النوع من المشكلات استخدام python -m pip .

يبدو أن كل هذه المشكلات تنبع من نفس المشكلة: ترقية النقطة ، مع الاستمرار في استخدام قاذفة قديمة لا تزال تستخدم نقطة الإدخال القديمة. هناك طريقة جيدة لتجنب هذا النوع من المشكلات وهي استخدام بيثون-م بيب.

نعم ، أعتقد أن هذا يبدو أنه أصل المشكلة ، ويحدث عبر جميع الأنظمة الأساسية المختلفة المذكورة في هذا الموضوع ، بما في ذلك Windows.

في حال كان هذا يساعد أي شخص آخر ، يمكنني أن أؤكد أن تبديل ترقية النقطة appveyor.yml من:

pip install --disable-pip-version-check --user --upgrade pip

ل:

python -m pip install --upgrade pip

لا يصلح المشكلة. الآن لتحديث العديد من المستودعات!

واجهت نفس الأعراض التي نوقشت هنا في موقف مختلف.

كنت أحاول استخدام نقطة مثبتة محليًا على نظام Ubuntu 16.0.4:

curl -O https://bootstrap.pypa.io/get-pip.py
export PYTHONUSERBASE=$(pwd)
python ./get-pip.py --user
export PYTHONPATH=$(pwd)/lib/python2.7/site-packages

python ./bin/pip --version

Traceback (most recent call last):
  File "/path/to/bin/pip", line 7, in <module>
    from pip._internal import main
ImportError: No module named _internal

اتضح أن Ubuntu تضيف مسارًا خاصًا بالنقطة إلى sys.path عبر site.py ، والذي تجاوز PYTHONPATH الخاص بي ، كما هو موضح أدناه:

import sys
print(sys.path)
['', '/usr/local/lib/python2.7/dist-packages/pip-9.0.1-py2.7.egg', '/path/to/lib/python2.7/site-packages`, ...]

حاولت تجنب العلامة الأولية بعلامة -S للغة Python ، الموثقة في صفحة الدليل على النحو التالي:

-S تعطيل استيراد موقع الوحدة والمعالجات المعتمدة على الموقع لـ sys.path التي تستلزمها.

وعملت:

python -S ./bin/pip --version

pip 10.0.1 from path/to/bin/pip (python 2.7)

المشاركة في حال كان هذا قد يساعد الآخرين - في صورة عامل الإرساء (الأساس هو ubuntu:xenial ) تلقيت الخطأ التالي:

Step 8/12 : RUN pip install -U pip  && pip install -r /tmp/requirements.txt
 ---> Running in e4ff51b013f0
Collecting pip
  Downloading https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl (1.3MB)
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-10.0.1
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

لقد غيرت pip install -U pip && pip install -r /tmp/requirements.txt إلى pip2 install -U pip && pip2 install -r /tmp/requirements.txt . هذا حل المشكلة.

لست متأكدًا مما إذا كنت قد رأيت إجابة / ردًا على تعليق davidjlloyd :

لست متأكدًا من أن كسر الاستخدامات الحالية لميزة غير مدعومة بقوة بدلاً من إهمال الميزة لبضعة إصدارات رئيسية هو أفضل نهج.

هل يمكنني من فضلك أن أسأل لماذا لم تكن هناك عملية إهمال لهذا الغرض؟
يبدو أنه كان من الممكن أن يكون سهلاً للغاية ، على import من pip ، تحقق من sys.argv[0] ؛ إذا لم يكن pip أو pipX[.Y] ، فاذكر بعض DeprecationWarning s أن هذا سيفشل في الإصدار X + ، مع رابط لما ذكرته: https: //pip.pypa. io / en / latest / user_guide / # using -pip-from-your-program

هل هناك عملية قائمة لمحاولة ضمان تجنب هذا النوع من الأشياء في المستقبل؟

لست متأكدًا مما إذا كنت قد رأيت إجابة / ردًا على تعليق davidjlloyd :

تمت الإجابة عليه مرارًا وتكرارًا ، ربما ليس بشأن هذه المسألة المحددة ، ولكن البحث في أداة تعقب المشكلة يجب أن يجد الكثير من النقاش حول هذه المسألة.

هل يمكنني من فضلك أن أسأل لماذا لم تكن هناك عملية إهمال لهذا الغرض؟

لأنه لم يتم دعمه أبدًا. لماذا نحذر من أننا نلغي دعمنا لشيء لم ندعمه أبدًا؟ افترض الناس أنه من الجيد قراءة الكود المصدري للنقطة واستخدام الوظائف التي وجدوها هناك في الكود الخاص بهم. لم يكن كذلك. قلنا أنه يمكن أن ينكسر ، وفي النقطة 10 حدث ذلك.

يبدو أنه كان من السهل جدًا ، عند استيراد النقطة ، تحقق من sys.argv [0] ؛ إذا لم يكن الأمر pip أو pipX [.Y] ، فقم بإطلاق بعض التحذيرات من الإهلاك

لست متأكدًا من أنها سهلة كما تعتقد. وأقول ذلك من منظور شخص كان عليه التعامل مع القضايا التي تم فيها تشغيل التحذيرات المضافة في النقطة 10 عندما لم نتوقع حدوثها ...

ومرة أخرى ، ليست هناك حاجة لإهمال شيء غير مدعوم في المقام الأول.

هل هناك عملية قائمة لمحاولة ضمان تجنب هذا النوع من الأشياء في المستقبل؟

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

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

كان لدي برنامج نصي bash قام بتثبيت flask ويطلب الترقية إلى كسر البرنامج النصي الخاص بي ، لكنني أفهم الأسباب المذكورة أعلاه. كان عملي للحفاظ على عمل البرنامج النصي هو ببساطة إطلاق عملية bash جديدة ، ربما يكون هذا خطأ ولكنه نجح معي. آمل أن يساعد الآخرين بنصوص مماثلة.

pip install --upgrade pip
echo "pip install Flask" | bash
echo "pip install requests" | bash

OneLogicalMyth قد يكون ما تبحث عنه hash -d pip ، راجع https://github.com/pypa/pip/issues/5221#issuecomment -381568428.

لقد فاتتك تمامًا أنه حتى بعد قراءتها بعناية ، شكرًا لك @ austinbutler ، لقد أدى هذا إلى حل مشكلتي.

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

لقد أدرجت الحلول من قبل (كلها تافهة) لجميع هذه المشكلات المذكورة هنا تقريبًا - ألق نظرة على https://github.com/pypa/pip/issues/5221#issuecomment -382069604. نأمل أن يعالج ذلك جميع المخاوف التي أثيرت في هذه القضية. إذا لم يحدث ذلك ، يرجى فتح إصدار جديد.

@ benoit-pierre أضفت اقتراحك باستخدام python -m pip إلى التعليق المرتبط. شكرا على ذلك. :)


قد يؤدي تثبيت pip باستخدام easy_install إلى حدوث مشكلات ، وإذا حدث ذلك ، فلن نتمكن من دعمك ، لأن (كما قال pradyunsg ) easy_install قديم ولا تتم صيانته بنشاط ويفتقد الميزات الحديثة.

شكرا لتوضيح موقفي pfmoore. هذا ما كنت أتحدث عنه.

لقد أصبحت مرتبكًا بشكل متزايد حول ماهية المشكلات المختلفة التي تتم مناقشتها.

أنا أيضا.


فقط بعض النصائح العامة (خذها أو اتركها) ، حول الأشياء التي رأيتها في هذه المسألة:

  • إذا لم يعمل الأمر pip لسبب ما ، فحاول تشغيل python -m pip . الاحتمالات هي python -m pip ستعمل من أجلك حتى إذا تعطلت البرامج النصية الخاصة بالغلاف. إذا لم يفلح الأمر ، فافتح عددًا جديدًا.
  • لا تقم بتشغيل النقطة كجذر أو قم بعمل sudo pip . من المحتمل أن تعطل نظامك وإذا لم يكن ذلك سيئًا بما يكفي ، فأنت تقوم بتنفيذ التعليمات البرمجية عن بُعد كجذر.
  • لا تستخدم easy_install للأسباب المذكورة أعلى هذا التعليق. إليك المزيد من السياق (هذا قديم قليلاً).
  • الرجاء عدم التثبيت على النقطة 9. أعتقد بشدة أن القيام بذلك يعمل بنشاط على إبطاء تقدم حزمة Python بشكل عام.

    • لن تدعم النقطة 9 PEP أبدًا 517/518 والبقاء على النقطة 9 يعني أنه سيتعين عليك تحمل المتاعب للتبديل لاحقًا ، عندما تتعطل الحزمة في اللحظة الأخيرة لأنها تتحول إلى معايير التعبئة الأحدث.


للتلخيص ، من المحتمل ألا يكون هذا خطأ مشروع / شخصًا واحدًا ، والجميع لديهم أسباب جيدة لاتخاذ أفعالهم. نعم ، بيئتك تحطمت. نحن نتفهم. لا تلقي باللوم على الأشخاص الذين يتطوعون بأوقات فراغهم ، لمساعدتك في الوقت الحالي وتطوير Pip.

هل تريد مساعدتنا؟ https://donate.pypi.org شيء ، وإذا لم يكن هذا هو نوعك ، فهناك الكثير من المشكلات المفتوحة في أداة تعقب المشكلات هذه والتي يمكنك مساعدتنا في حلها.

سأتراجع عن هذه المشكلة الآن.

حسنًا ، هناك شيء أخير ، إذا كان هناك شخص ما لا يزال يرغب في مناقشة قرارنا بنقل جميع التعليمات البرمجية الخاصة بنا إلى pip._internal ، فافتح إصدارًا جديدًا وأعطِ ذكرًا. سأقضي بعض الوقت في كتابة شيء ما يحتوي على روابط وكل شيء ، حول سبب قيام Pip بذلك. بهذه الطريقة ، سيكون لدى @ pypa / pip-committers مكان واحد لربط الأشخاص به حول هذا الموضوع.

في الوقت الحالي ، نجح هذا في python3 / pip3 ، لإعادته مرة أخرى

python3 -m pip install --user --upgrade pip==9.0.3

freckletonj من فضلك لا تخبر الناس بالعودة إلى النقطة 9. هذه ليست الطريقة التي يجب أن تحل بها هذه المشكلة. هناك طرق أفضل بكثير.

لقد قمت بربط تعليق فوق تعليقك ، مع سرد طرق لحل هذه المشكلة.

آسف pradyunsg ، لكن هذا لا يزال لا يعمل:

$ pip3 install --upgrade --user pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 9.0.3
    Uninstalling pip-9.0.3:
      Successfully uninstalled pip-9.0.3
Successfully installed pip-10.0.1
$ pip3
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'

من https://github.com/pypa/pip/issues/5221#issuecomment -382069604 ، الذي ربطته أعلاه:

hash -r pip # or hash -d pip

إذا كان لدى أي شخص أي استفسارات أخرى ، يرجى فتح مشكلة جديدة.

يوفر 5599 معلومات ويوفر موقعًا واحدًا لطلب المساعدة لحل هذه المشكلة للمستخدمين النهائيين.

قسم التعليقات الخاص بهذه المشكلة مفتوح للمستخدمين لمناقشة مشاكل وحلول محددة. :)

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