Pip bị vỡ. Làm thế nào để sửa lỗi DistributionNotFound?


146

Bất cứ khi nào tôi cố gắng sử dụng pip, tôi gặp lỗi. Đối với đề thi:

$ 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

Tôi cảm thấy muốn thay đổi giá trị của thành pip == 0.8.2 .. nhưng tôi không cảm thấy phải đối phó với hậu quả của việc 'hack' khi cài đặt ... Tôi đang chạy python 2.7 và pip là phiên bản 0.8.2.


Rất nhiều nếu đau ở đây. Giải pháp chung đơn giản là tải xuống pip được cài đặt từ: https://bootstrap.pypa.io/get-pip.py và sau đó chạy tệp đó (sử dụng python). Các bản sửa lỗi khác phụ thuộc rất nhiều vào hệ thống và thường lộn xộn và các đề xuất bên dưới thường không hoạt động (dựa trên kinh nghiệm của tôi về hai đứa trẻ khác nhau của hệ thống)
GregD

Câu trả lời:


253

Tôi thấy vấn đề này trong MacBook của mình, lý do là vì như @Stephan đã nói, tôi sử dụng easy_install để cài đặt pip và hỗn hợp của cả hai công cụ quản lý gói py dẫn đến sự pkg_resources.DistributionNotFoundcố. Giải quyết là:

easy_install --upgrade pip

Hãy nhớ rằng: chỉ cần sử dụng một trong các công cụ trên để quản lý các gói Py của bạn.


55
Hà này chỉ cho tôi lỗi:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm

2
Hoạt động tốt trên Mac OS X 10.9. Cảm ơn!
Anton Babenko

2
Bạn có thể thấy rằng a) bạn cần sudo easy_install - nâng cấp pip và b) sau đó bạn có thể gặp lỗi về bánh xe khi bạn sử dụng pip. Tại thời điểm đó, hãy nhìn vào đây: stackoverflow.com/questions/20905350/ từ
mchicago

@PiotrDobrogost Tôi không đồng ý - bài viết bạn đã liên kết là về việc sử dụng virtualenv nếu không bạn có gói bazillion và hiệu suất và xung đột giữa các ứng dụng có thể xảy ra - trong instacnce này, chúng tôi muốn sử dụng virtualenv. Tuy nhiên, để cài đặt virtualenv, bạn muốn cài đặt nó trên toàn cầu cho mọi người và do đó, sudo easyinstall. để cài đặt virtualenv . cho phép virtualenv thực sự hoạt động, vậy còn cách nào khác để cài đặt env ảo mà không cần cài đặt thủ công (và do đó khó bảo trì).
mchicago

1
got .. 'sudo easy_install3 - nâng cấp pip' đã thực hiện
pavan

31

Tôi đã thay thế 0.8.1 trong 0.8.2 in / usr / local / bin / pip và mọi thứ hoạt động trở lại.

__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')()
    )

Tôi đã cài đặt pip thông qua easy_install có thể khiến tôi đau đầu. Tôi nghĩ rằng đây là cách bạn nên làm nó ngày nay ..

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

13
Tôi luôn cố gắng tránh cài đặt các gói python thuần bằng trình quản lý gói OS - và tôi khuyên bạn nên làm như vậy. Ubuntu / Debian đã từng phá vỡ gói setuptools và nó gây ra một số vấn đề đau đầu vì mọi người không thể gỡ cài đặt các gói bằng pip (do những thay đổi của chúng).
Hugo Tavares

sử dụng apt hoặc yum không đủ thuyết phục! các chiến lược trên trang này là phù hợp cho sự phát triển của địa phương, nhưng xin vui lòng không làm điều này để triển khai.
ken

Tương tự ở đây, pip đã tự sát khi nâng cấp lên 1.3.1 trên máy Mac, trong khi chính pip đề cập đến nó vẫn là 1.2.1 ...
Anthony Liekens

@PiotrDobrogost vui lòng xem bình luận ở trên - trong trường hợp này cần thiết để virtualenv hoạt động.
mchicago

27

Tôi đã có vấn đề này khi tôi đang sử dụng homebrew. Đây là giải pháp từ Vấn đề # 26900

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

Có thể hữu ích để thử cả hai với tùy chọn --user và không (cái sau yêu cầu sudo).
Ray

11

Hãy thử cài đặt lại với tập lệnh get-pip:

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

Điều này có nguồn gốc từ trang pip Github, và làm việc cho tôi.


7

Nếu bạn đang sử dụng CentOS, hãy đảm bảo bạn đã cài đặt gói YUM "python-setuptools"

yum install python-setuptools

Đã sửa nó cho tôi.


6

Nguyên nhân của vấn đề thường là các tập lệnh lỗi thời trong thư mục con bin(Linux) hoặc Scripts(Windows). Tôi sẽ giải thích vấn đề này bằng cách sử dụng vấn đề mà tôi gặp phải là một ví dụ.

Tôi đã cài đặt virtualenv phiên bản 1.10 trong các gói trang web người dùng của tôi (thực tế là trong các gói trang web của người dùng không phải là gói trang web sytem không liên quan ở đây)

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

Sau khi tôi nâng cấp lên phiên bản 1.11, tôi đã gặp lỗi sau:

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

Tệp /home/users/pdobrogost/.local/bin/virtualenvđược đề cập trong thông báo lỗi trông như thế này:

#!/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')()
    ) 

Ở đó, chúng tôi thấy rằng virtualenvtập lệnh không được cập nhật và vẫn yêu cầu phiên bản 1.10 của virtualenv được cài đặt trước đó.
Bây giờ, cài đặt lại virtualenv như thế này

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...

không giúp (không pip install --user --upgrade --force-reinstall virtualenv) vì tập lệnh /home/users/pdobrogost/.local/bin/virtualenvkhông thay đổi.

Cách duy nhất tôi có thể khắc phục điều này là bằng cách xóa thủ công các tập lệnh virtualenv * khỏi /home/users/pdobrogost/.local/bin/thư mục và cài đặt lại virtualenv. Sau này, các tập lệnh mới được tạo tham chiếu đến phiên bản phù hợp của gói:

pdobrogost@host:~$ virtualenv --version
1.11

6

Tôi đã có thể giải quyết điều này như vậy:

$ 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

Tôi đang chạy với những thứ sau đây (kể từ ngày 2 tháng 1 năm 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

Tôi đã phải đối mặt với vấn đề tương tự trong OSx. Chồng tôi đang nói

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

Sau đó tôi đã làm như sau

sudo pip install --upgrade setuptools

Điều này giải quyết các vấn đề đối với tôi. Hy vọng ai đó sẽ tìm thấy điều này hữu ích.


1
Điều này đã khắc phục sự cố của tôi trên Windows 10.
Mark Allen

1
Điều này đã khắc phục sự cố cho chúng tôi trên CentOS 6.
Dan Philliffel

2

Trên Mac OS X (MBP), phần sau (lấy từ câu trả lời khác được tìm thấy ở đây) đã giải quyết các vấn đề của tôi:

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

Rõ ràng nguyên nhân gốc rễ ở đây là có một phương pháp thứ yếu để cài đặt python (trong trường hợp của tôi là Homebrew). Hy vọng, những người chịu trách nhiệm về tập lệnh pip có thể khắc phục vấn đề này vì nó vẫn còn liên quan 2 năm sau khi lần đầu tiên được báo cáo về Stack Overflow.


1

Tôi gặp vấn đề này vì tôi đã cài đặt python / pip với một điều kỳ lạ ~/.pydistutils.cfgmà tôi không nhớ là đã viết. Đã xóa nó, cài đặt lại (với pybrew), và mọi thứ đều ổn.


1

Trong trường hợp của tôi (vấn đề sam, nhưng các gói khác) không có phụ thuộc phiên bản. Một chuỗi các gỡ cài đặt pip và pip insstall đã giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.