pip ยากจน วิธีการแก้ไขข้อผิดพลาด DistributionNotFound?


146

เมื่อใดก็ตามที่ฉันพยายามใช้ pip ฉันได้รับข้อผิดพลาด สำหรับผู้สอบ:

$ sudo pip install gevent-websocket

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1

ฉันรู้สึกอยากเปลี่ยนค่าเป็น pip == 0.8.2 .. แต่ฉันไม่รู้สึกว่าต้องจัดการกับผลที่ตามมาของ 'การแฮ็ก' ในการติดตั้งของฉัน ... ฉันใช้ python 2.7 และ pip ​​เป็นรุ่น 0.8.2


มีอาการปวดมากมาย วิธีแก้ปัญหาทั่วไปอย่างง่ายคือดาวน์โหลด pip ที่ติดตั้งจาก: https://bootstrap.pypa.io/get-pip.pyแล้วเรียกใช้ไฟล์นั้น (โดยใช้ python) การแก้ไขอื่น ๆ ขึ้นอยู่กับระบบเป็นอย่างมากและมักจะยุ่งเหยิงและคำแนะนำด้านล่างมักจะไม่ทำงาน (ขึ้นอยู่กับประสบการณ์ของฉันในระบบลูกที่แตกต่างกันสองระบบ)
GregD

คำตอบ:


253

ฉันพบปัญหานี้ใน MacBook ของฉันเหตุผลก็เพราะ @Stephan กล่าวว่าฉันใช้easy_install ในการติดตั้ง pip และการผสมผสานของทั้งสองแพ็คเกจ py จัดการเครื่องมือที่นำไปสู่pkg_resources.DistributionNotFoundปัญหา การแก้ไขคือ:

easy_install --upgrade pip

ข้อควรจำ: ใช้เครื่องมือใดเครื่องมือหนึ่งข้างต้นเพื่อจัดการแพ็คเกจ Py ของคุณ


55
ฮานี้เพียงแค่ให้ฉันข้อผิดพลาด:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm

2
ใช้งานได้ดีบน Mac OS X 10.9 เช่นกัน ขอบคุณ!
Anton Babenko

2
คุณอาจพบว่า a) คุณต้อง sudo easy_install - อัพเกรด pip และ b) คุณอาจพบข้อผิดพลาดเกี่ยวกับวงล้อเมื่อคุณใช้ pip ณ จุดนี้ให้ดูที่: stackoverflow.com/questions/20905350/…
mchicago

@PiotrDobrogost ฉันไม่เห็นด้วย - บทความที่คุณเชื่อมโยงนั้นเกี่ยวกับการใช้ virtualenv มิฉะนั้นคุณจะมีแพ็คเกจมูลค่าหลายพันล้านและประสิทธิภาพและความขัดแย้งระหว่างแอปพลิเคชันอาจเกิดขึ้นได้ใน instacnce นี้เราต้องการใช้ virtualenv อย่างไรก็ตามในการติดตั้ง virtualenv คุณต้องการติดตั้งทั่วโลกสำหรับทุกคนดังนั้น sudo easyinstall สำหรับการติดตั้ง virtualenv ซึ่งอนุญาตให้ virtualenv ใช้งานได้จริงดังนั้นวิธีอื่นในการติดตั้ง virtual env โดยไม่ต้องทำการติดตั้งด้วยตนเอง (และยากต่อการบำรุงรักษา)
mchicago

1
ได้ .. 'sudo easy_install3 - อัปเกรด pip' ทำมัน
pavan

31

ฉันแทนที่ 0.8.1 ใน 0.8.2 ใน / usr / local / bin / pip และทุกอย่างทำงานได้อีกครั้ง

__requires__ = 'pip==0.8.2'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pip==0.8.2', 'console_scripts', 'pip')()
    )

ฉันติดตั้ง pip ผ่าน easy_install ซึ่งอาจทำให้ฉันปวดหัวนี้ ฉันคิดว่านี่เป็นวิธีที่คุณควรทำในปัจจุบัน ..

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv

13
ฉันพยายามหลีกเลี่ยงการติดตั้งแพ็กเกจหลามแท้โดยใช้ตัวจัดการแพ็คเกจระบบปฏิบัติการ - และฉันแนะนำให้คุณทำเช่นเดียวกัน อูบุนตู / เดเบียนเคยทำลายแพ็คเกจ setuptools และทำให้เกิดอาการปวดหัวเพราะคนไม่สามารถถอนการติดตั้งแพ็คเกจโดยใช้ pip (เนื่องจากการเปลี่ยนแปลง)
Hugo Tavares

ใช้ apt หรือ yum นั้นไม่เชื่อเรื่องพระเจ้ามากพอ! กลยุทธ์ในหน้านี้เพียงพอสำหรับการพัฒนาในประเทศ แต่โปรดอย่าทำสิ่งนี้เพื่อการปรับใช้
ken

เดียวกันที่นี่ pip ฆ่าตัวตายเมื่ออัพเกรดเป็น 1.3.1 บน Mac ในขณะที่ pip เองกล่าวว่ามันยังคงเป็น 1.2.1 ...
Anthony Liekens

@PiotrDobrogost โปรดดูความคิดเห็นด้านบน - จำเป็นในอินสแตนซ์นี้เพื่อให้ virtualenv ทำงานได้
mchicago

27

ฉันมีปัญหานี้เมื่อฉันใช้ homebrew นี่คือทางออกจาก Issue # 26900

python -m pip install --upgrade --force pip

มันอาจจะเป็นประโยชน์หากลองด้วยตัวเลือก --user และไม่ใช้ (ตัวหลังต้องใช้ sudo)
เรย์

11

ลองติดตั้งใหม่ด้วยสคริปต์ get-pip:

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

นี่มาจากหน้า pip Github และใช้ได้สำหรับฉัน


7

หากคุณใช้ CentOS ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแพ็คเกจ "python-setuptools" ของ YUM แล้ว

yum install python-setuptools

แก้ไขให้ฉัน


6

รากของปัญหามักจะเป็นสคริปต์ที่ล้าสมัยในไดเรกทอรีย่อยbin(Linux) หรือScripts(Windows) ฉันจะอธิบายปัญหานี้โดยใช้ฉันพบว่าตัวเองเป็นตัวอย่าง

ฉันติดตั้ง virtualenv เวอร์ชั่น 1.10 ในแพ็คเกจผู้ใช้เว็บไซต์ของฉันแล้ว (ความจริงมันอยู่ในแพ็คเกจไซต์ผู้ใช้ที่ไม่ใช่ sytem site-packages ไม่เกี่ยวข้องกับที่นี่)

pdobrogost@host:~$ which virtualenv
/home/users/pdobrogost/.local/bin/virtualenv
pdobrogost@host:~$ virtualenv --version
1.10

หลังจากฉันอัพเกรดเป็นเวอร์ชั่น 1.11 ฉันได้รับข้อผิดพลาดต่อไปนี้:

pdobrogost@host:~$ virtualenv --version  
Traceback (most recent call last):   
  File "/home/users/pdobrogost/.local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2701, in <module>
    return self.__dep_map   
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 572, in resolve
    if insert: 
pkg_resources.DistributionNotFound: virtualenv==1.10

ไฟล์ที่/home/users/pdobrogost/.local/bin/virtualenvกล่าวถึงในข้อความแสดงข้อผิดพลาดมีลักษณะดังนี้:

#!/opt/python/2.7.5/bin/python2.7
# EASY-INSTALL-ENTRY-SCRIPT: 'virtualenv==1.10','console_scripts','virtualenv'
__requires__ = 'virtualenv==1.10'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('virtualenv==1.10', 'console_scripts', 'virtualenv')()
    ) 

ที่นั่นเราเห็นว่าvirtualenvสคริปต์ไม่ได้รับการอัพเดตและยังคงต้องการ virtualenv เวอร์ชัน 1.10 ที่ติดตั้งไว้ก่อนหน้านี้
ตอนนี้การติดตั้ง virtualenv แบบนี้อีกครั้ง

pdobrogost@host:~$ pip install --user --upgrade virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py27/v/virtualenv/virtualenv-1.11.1-py27-none-any.whl#md5=265770b61de41d34d2e9fdfddcdf034c
  Using download cache from /home/users/pdobrogost/.pip_download_cache/https%3A%2F%2Fpypi.python.org%2Fpackages%2Fpy27%2Fv%2Fvirtualenv%2Fvirtualenv-1.11.1-py27-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

ไม่ช่วย (ไม่pip install --user --upgrade --force-reinstall virtualenv) เพราะสคริปต์/home/users/pdobrogost/.local/bin/virtualenvไม่มีการเปลี่ยนแปลง

วิธีเดียวที่ฉันสามารถแก้ไขได้คือการลบ virtualenv * script จาก/home/users/pdobrogost/.local/bin/โฟลเดอร์และติดตั้ง virtualenv อีกครั้งด้วยตนเอง หลังจากนี้สคริปต์ที่สร้างขึ้นใหม่อ้างถึงแพ็คเกจที่เหมาะสม:

pdobrogost@host:~$ virtualenv --version
1.11

6

ฉันสามารถแก้ไขปัญหานี้ได้เช่น:

$ brew update
$ brew doctor
$ brew uninstall python
$ brew install python --build-from-source    # took ~5 mins
$ python --version                           # => Python 2.7.9
$ pip install --upgrade pip

ฉันกำลังใช้สิ่งต่อไปนี้ (ณ วันที่ 2 มกราคม 2015):

OS X Yosemite
Version 10.10.1

$ brew -v
Homebrew 0.9.5

$ python --version
Python 2.7.9

$ ipython --version
2.2.0

$ pip --version
pip 6.0.3 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.3-py2.7.egg (python 2.7)

$ which pip
/usr/local/bin/pip

5

ฉันกำลังเผชิญกับปัญหาที่คล้ายกันใน OSx กองซ้อนของฉันกำลังพูด

raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: setuptools>=11.3

จากนั้นฉันก็ทำสิ่งต่อไปนี้

sudo pip install --upgrade setuptools

สิ่งนี้ช่วยแก้ไขปัญหาให้ฉันได้ หวังว่าใครบางคนจะพบว่ามีประโยชน์นี้


1
สิ่งนี้แก้ไขปัญหาของฉันใน Windows 10
Mark Allen

1
สิ่งนี้ได้แก้ไขปัญหาสำหรับเราใน CentOS 6
Dan Phillimore

2

ใน Mac OS X (MBP) ต่อไปนี้ (นำมาจากคำตอบอื่นที่พบในที่นี้) แก้ไขปัญหาของฉัน:

C02L257NDV33:~ jjohnson$ brew install pip
Error: No available formula for pip
Homebrew provides pip via: `brew install python`. However you will then
have two Pythons installed on your Mac, so alternatively you can:
    sudo easy_install pip
C02L257NDV33:~ jjohnson$ sudo easy_install pip

สาเหตุที่ชัดเจนที่นี่คือการมีวิธีการรองที่จะติดตั้งหลาม (ในกรณีของฉัน Homebrew) หวังว่าผู้ที่รับผิดชอบสคริปต์ pip สามารถแก้ไขปัญหานี้ได้เนื่องจากยังคงมีความเกี่ยวข้อง 2 ปีหลังจากการรายงานครั้งแรกใน Stack Overflow


1

ฉันมีปัญหานี้เพราะฉันติดตั้ง python / pip ด้วยแปลก ๆ~/.pydistutils.cfgที่ฉันจำไม่ได้ว่าเขียน ลบแล้วติดตั้งใหม่ (ด้วยpybrew) และทุกอย่างเรียบร้อยดี


1

ในกรณีของฉัน (ปัญหาแซม แต่แพ็คเกจอื่น ๆ ) ไม่มีการอ้างอิงรุ่น ลำดับของการถอนการติดตั้ง pip และ pip ​​insstall ไม่ได้ช่วยอะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.