Điều gì đang gây ra ImportError: Không có mô-đun nào có tên pkg_resources sau khi nâng cấp Python trên hệ điều hành X?


82

Tôi vừa cập nhật Python lên 2.6.4 trên máy Mac của mình. Tôi đã cài đặt từ gói dmg.

Hệ nhị phân dường như không đặt đúng đường dẫn Python của tôi, vì vậy tôi đã thêm '/usr/local/lib/python2.6/site-packages'vào.bash_profile

>>> pprint.pprint(sys.path)  
['',
'/Users/Bryan/work/django-trunk', 
'/usr/local/lib/python2.6/site-packages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload',  
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages']

Rõ ràng đó không phải là tất cả các con đường bắt buộc vì tôi không thể chạy iPython.

$ ipython  
Traceback (most recent call last):  
  File "/usr/local/bin/ipython", line 5, in <module>  
  from pkg_resources import load_entry_point  
ImportError: No module named `pkg_resources`

Tôi đã thực hiện các tìm kiếm trên Google và thực sự không thể tìm ra cách cài đặt pkg_resourceshoặc đảm bảo rằng nó đang ở trên đường dẫn.

Tôi cần làm gì để sửa lỗi này?

Câu trả lời:


73

[UPDATE] TL; DR pkg_resourcesđược cung cấp bởi một trong hai Distribute hoặc setuptools .

[CẬP NHẬT 2] Như đã thông báo tại PyCon 2013, các dự án Distributesetuptoolsdự án đã được hợp nhất lại. Distributehiện không được dùng nữa và bạn chỉ nên sử dụng hiện tại mới setuptools. Thử đi:

curl -O https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

Hoặc, tốt hơn, sử dụng dòng điện piplàm giao diện cấp cao và sẽ sử dụng setuptoolsbên dưới các nắp.

[Câu trả lời dài hơn cho vấn đề cụ thể của OP]:

Bạn không nói trong câu hỏi của mình nhưng tôi giả sử bạn đã nâng cấp từ Python do Apple cung cấp (2.5 trên 10.5 hoặc 2.6.1 trên 10.6) hoặc bạn đã nâng cấp từ python.org Python 2.5. Trong bất kỳ trường hợp nào trong số đó, điểm quan trọng là mỗi phiên bản Python có thư viện riêng của nó, bao gồm cả thư viện gói trang web của riêng nó, là nơi các gói bổ sung được cài đặt. (Và không ai trong số họ sử dụng /usr/local/libtheo mặc định.) Điều đó có nghĩa là bạn sẽ cần cài đặt các gói bổ sung cần thiết cho python 2.6 mới của mình. Cách dễ nhất để làm điều này là trước tiên đảm bảo rằng python2.6 mới xuất hiện đầu tiên trên tìm kiếm của bạn $PATH(nghĩa là, nhập python2.6sẽ gọi nó như mong đợi); trình cài đặt python2.6 nên đã sửa đổi của bạn .bash_profileđể đặt thư mục bin khung của nó ở phía trước $PATH. Sau đó cài đặt easy_installbằngsetuptools theo hướng dẫn ở đó. Các pkg_resourcesmô-đun cũng được tự động cài đặt bước này.

Sau đó, sử dụng phiên bản mới được cài đặt của easy_install(hoặc pip) để cài đặt ipython.

easy_install ipython

hoặc là

pip install ipython

Nó sẽ tự động được cài đặt vào đúng site-packagesvị trí cho phiên bản python đó và bạn nên thực hiện.


Tôi đã nhầm lẫn khi cố gắng cài đặt setuptools vào đêm qua. Tôi đã sơ ý để kết thúc cài đặt bằng cách chạy tệp .egg như thể nó là một tệp shell. $ sh setuptools-0.6c11-py2.6.egg Tôi đoán điều đó đã thêm đường dẫn Python mới ở đâu đó.
BryanWheelock

LƯU Ý: Câu trả lời thực tế rằng giải quyết vấn đề này đối với tôi là liệt kê dưới đây thấy stackoverflow.com/a/10538341/293064
Jay Taylor

Tôi đã cập nhật câu trả lời cũ này một chút để làm rõ ràng hơn rằng giải pháp là cài đặt Distributehoặc setuptools. Các bước cụ thể có trong các liên kết. Câu hỏi của OP bao gồm các mục khác.
Ned Deily

Một chỉnh sửa thêm để phản ánh việc không còn distributeủng hộ cái mới setuptoolsvà cái mới cần đề cập pip.
Ned Deily

1
nhận được python ez_setup.py File "ez_setup.py", line 1 <!DOCTYPE html> ^ SyntaxError: invalid syntax:(
hi15

76

Tôi gặp phải như vậy ImportError. Bằng cách nào đó, setuptoolsgói đã bị xóa trong môi trường Python của tôi.

Để khắc phục sự cố, hãy chạy tập lệnh thiết lập cho setuptools:

curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python

Nếu bạn có bất kỳ phiên bản nào hoặc bất kỳ phiên bản distributenào setuptoolsdưới 0,6, trước tiên bạn sẽ phải gỡ cài đặt nó. *

Xem Hướng dẫn Cài đặt để biết thêm chi tiết.


* Nếu bạn đã có một thiết bị đang hoạt động distribute, việc nâng cấp nó lên "trình bao bọc khả năng tương thích" để chuyển bạn sang setuptoolsdễ dàng hơn. Nhưng nếu mọi thứ đã bị hỏng, đừng thử điều đó.


3
Đây là cách đúng đắn để làm điều đó. Nếu không có pkg_resources, easy_installcũng có thể sẽ không hoạt động (vì vậy easy_installpipsẽ không thể cài đặt các công cụ thiết lập).
Alex Churchill

Trên thực tế, cài đặt phân phối hoặc setuptools là câu trả lời được chấp nhận được đề xuất. Tôi đã cập nhật câu trả lời ban đầu một chút để làm cho nó rõ ràng hơn. BTW, sẽ hơi nguy hiểm khi tải xuống và cài đặt thứ gì đó từ một URL không an toàn như vậy mà không kiểm tra nội dung của tệp trước.
Ned Deily vào

7

Trong trường hợp nâng cấp python của bạn trên mac os 10.7 và pkg_resources không hoạt động, cách đơn giản nhất để khắc phục điều này chỉ là cài đặt lại setuptools như Ned đã đề cập ở trên.

sudo pip install setuptools --upgrade
or sudo easy_install install setuptools --upgrade

3

Trên hệ thống của tôi (OSX 10.6) gói đó ở

/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py

Tôi hy vọng điều đó sẽ giúp bạn tìm ra liệu nó có bị thiếu hay không trên con đường của bạn.


1

Lý do có thể là do mô-đun IPython không có trong PYTHONPATH của bạn.

Nếu bạn không tải IPython và sau đó thực hiện cài đặt python setup.py

Thiết lập không thêm IPython mô-đun vào đường dẫn python của bạn. Bạn có thể muốn thêm nó vào PYTHONPATH của mình theo cách thủ công. Nó sẽ hoạt động sau khi bạn làm:

xuất PYTHONPATH = / pathtoIPython: $ PYTHONPATH

Thêm dòng này vào .bashrc hoặc .profile của bạn để đặt nó vĩnh viễn.


0

Tôi nhận thấy điều này không liên quan đến OSX, nhưng trên một hệ thống nhúng (Beagle Bone Angstrom), tôi đã gặp phải thông báo lỗi chính xác. Cài đặt các gói ipk sau đã giải quyết được nó.

opkg install python-setuptools
opkg install python-pip

0

Tôi gặp lỗi này trên Ubuntu và những điều sau đây đã phù hợp với tôi:

Đã xóa các tệp nhị phân hộp kéo thả và tải xuống lại bằng cách chạy:

sudo rm -rf /var/lib/dropbox/.dropbox-dist
dropbox start -i

0

Tôi gặp phải vấn đề tương tự khi tôi đang làm việc trên dự án liên quan đến autobahn.

1) Vì vậy, tôi tải xuống biểu mẫu setuptools.-0.9.8.tar.gz https://pypi.python.org/packages/source/s/setuptools/ và giải nén nó.

2) Sau đó, tôi lấy mô-đun pkg_resources và sao chép nó vào thư mục cần thiết. ** trong trường hợp của tôi, thư mục đó là C: \ Python27 \ Lib \ site-pack \ autobahn


0

Trong trường hợp của tôi, gói python-pygmentsđã bị bỏ lỡ. Bạn có thể sửa nó bằng lệnh:

sudo apt-get install python-pygments

Nếu có vấn đề với pandoc. Bạn nên cài đặt pandocpandoc-citeproc.

sudo apt-get install pandoc pandoc-citeproc

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.