pip putus. bagaimana cara memperbaiki kesalahan DistributionNotFound?

146

Setiap kali saya mencoba menggunakan pip saya mendapatkan kesalahan. Untuk contoh:

$ 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

Saya merasa tergoda untuk mengubah nilai menjadi pip == 0.8.2 .. tapi saya tidak merasa berurusan dengan konsekuensi 'meretas' instalasi saya ... Saya menjalankan python 2.7 dan pip ada di versi 0.8.2.

Stephan
sumber
Banyak jika sakit di sini. Solusi umum yang sederhana adalah dengan mengunduh pip yang diinstal dari: https://bootstrap.pypa.io/get-pip.py dan kemudian jalankan file itu (menggunakan python). Perbaikan lainnya sangat tergantung pada sistem dan umumnya berantakan dan saran di bawah sering tidak bekerja (berdasarkan pengalaman saya pada dua anak yang berbeda dari sistem)
GregD

Jawaban:

253

Saya menemukan masalah ini di MacBook saya, alasannya adalah karena seperti @Stephan berkata, saya gunakan easy_install untuk menginstal pip, dan campuran kedua alat paket py mengelola menyebabkan pkg_resources.DistributionNotFoundmasalah. Tekadnya adalah:

easy_install --upgrade pip

Ingat: cukup gunakan salah satu alat di atas untuk mengelola paket Py Anda.

NewPtone
sumber
55
Ha ini hanya memberi saya kesalahan:pkg_resources.DistributionNotFound: distribute==0.6.36
Timmmm
2
Berfungsi bagus pada Mac OS X 10.9 juga. Terima kasih!
Anton Babenko
2
Anda mungkin menemukan bahwa a) Anda perlu sudo easy_install --upgrade pip dan b) Anda kemudian mungkin mendapatkan kesalahan tentang roda ketika Anda menggunakan pip. Pada titik itu lihat ini: stackoverflow.com/questions/20905350/…
mchicago
@PiotrDobrogost Saya agak tidak setuju - artikel yang Anda tautkan tentang penggunaan virtualenv jika tidak, Anda memiliki banyak paket dan kinerja dan konflik di antara aplikasi dapat terjadi - dalam kejadian ini, kami ingin menggunakan virtualenv. Namun, untuk menginstal virtualenv, Anda ingin menginstalnya secara global untuk semua orang, dan karenanya, sudo easyinstall. untuk instalasi virtualenv . yang memungkinkan virtualenv untuk benar-benar bekerja, jadi bagaimana lagi untuk menginstal env virtual tanpa melakukan instalasi manual (dan karenanya sulit untuk mempertahankan).
mchicago
1
mendapat .. 'sudo easy_install3 --upgrade pip' berhasil
pavan
31

Saya mengganti 0.8.1 di 0.8.2 di / usr / local / bin / pip dan semuanya bekerja kembali.

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

Saya menginstal pip melalui easy_install yang mungkin menyebabkan saya sakit kepala. Saya pikir ini adalah bagaimana Anda harus melakukannya saat ini ..

$ sudo apt-get install python-pip python-dev build-essential 
$ sudo pip install --upgrade pip 
$ sudo pip install --upgrade virtualenv
Stephan
sumber
13
Saya selalu mencoba untuk menghindari menginstal paket python murni menggunakan manajer paket OS - dan saya sarankan Anda untuk melakukan hal yang sama. Ubuntu / Debian pernah memecah paket setuptools dan itu menyebabkan beberapa sakit kepala karena orang tidak bisa menghapus paket menggunakan pip (karena perubahan mereka).
Hugo Tavares
menggunakan apt atau yum tidak cukup agnostik! strategi pada halaman ini memadai untuk pengembangan lokal, tapi tolong jangan lakukan ini untuk penyebaran.
ken
Sama di sini, pip bunuh diri ketika memutakhirkan ke 1.3.1 di Mac, sementara pip sendiri menyebutkan masih 1.2.1 ...
Anthony Liekens
@PiotrDobrogost silakan lihat komentar di atas - ini diperlukan dalam hal ini untuk membuat virtualenv bekerja.
mchicago
27

Saya memiliki masalah ini ketika saya menggunakan homebrew. Ini adalah solusi dari Edisi # 26900

python -m pip install --upgrade --force pip
Louis Cremen
sumber
Mungkin bermanfaat untuk mencoba keduanya dengan opsi --user dan tanpa (yang terakhir membutuhkan sudo).
Ray
11

Coba instal ulang dengan skrip get-pip:

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

Ini bersumber dari halaman pip Github, dan bekerja untuk saya.

pavan
sumber
7

Jika Anda menggunakan CentOS, pastikan Anda telah menginstal paket YUM "python-setuptools"

yum install python-setuptools

Memperbaikinya untukku.

Dave Lancea
sumber
6

Akar masalahnya adalah skrip yang sering kedaluwarsa dalam subdirektori bin(Linux) atau Scripts(Windows). Saya akan menjelaskan masalah penggunaan ini yang saya temui sebagai contoh.

Saya memiliki virtualenv versi 1.10 yang diinstal di paket-situs pengguna saya (fakta itu di paket-situs pengguna tidak sytem-paket situs tidak relevan di sini)

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

Setelah saya memutakhirkan ke versi 1.11 saya mendapat kesalahan berikut:

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

File yang /home/users/pdobrogost/.local/bin/virtualenvdisebutkan dalam pesan kesalahan tampak seperti ini:

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

Di sana, kita melihat bahwa virtualenvskrip tidak diperbarui dan masih memerlukan versi 1.10 dari virtualenv yang diinstal sebelumnya.
Sekarang, instal ulang virtualenv seperti ini

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

tidak membantu (keduanya pip install --user --upgrade --force-reinstall virtualenv) karena skrip /home/users/pdobrogost/.local/bin/virtualenvdibiarkan tidak berubah.

Satu-satunya cara saya dapat memperbaikinya adalah dengan secara manual menghapus skrip virtualenv * dari /home/users/pdobrogost/.local/bin/folder dan menginstal virtualenv lagi. Setelah ini, skrip yang baru dibuat merujuk ke versi paket yang tepat:

pdobrogost@host:~$ virtualenv --version
1.11
Piotr Dobrogost
sumber
6

Saya dapat menyelesaikan ini seperti ini:

$ 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

Saya menjalankan dengan hal-hal berikut (per 2 Januari 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
hernamesbarbara
sumber
5

Saya menghadapi masalah serupa di OSx. Stacktrace saya katakan

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

Kemudian saya melakukan yang berikut

sudo pip install --upgrade setuptools

Ini memecahkan masalah bagi saya. Semoga seseorang akan menemukan ini berguna.

Nabin
sumber
1
Ini memperbaiki masalah saya di Windows 10.
Mark Allen
1
Ini memperbaiki masalah kami di CentOS 6.
Dan Phillimore
2

Di Mac OS X (MBP), yang berikut (diambil dari jawaban lain yang ditemukan di sini) menyelesaikan masalah saya:

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

Jelas penyebab root di sini adalah memiliki metode sekunder yang digunakan untuk menginstal python (dalam kasus saya Homebrew). Mudah-mudahan, orang yang bertanggung jawab untuk skrip pip dapat memperbaiki masalah ini sejak masih relevan 2 tahun setelah pertama kali dilaporkan pada Stack Overflow.

Joe Johnson
sumber
1

Saya punya masalah ini karena saya menginstal python / pip dengan aneh ~/.pydistutils.cfgyang saya tidak ingat menulis. Dihapus, diinstal ulang (dengan pybrew), dan semuanya baik-baik saja.

polm23
sumber
1

Dalam kasus saya (masalah sam, tetapi paket lain) tidak ada ketergantungan versi. Urutan penghapusan pipa dan pemasangan pipa memang membantu.

rhoerbe
sumber