Tidak ada modul bernama pkg_resources

452

Saya menggunakan aplikasi Django ke server dev dan saya mengenai kesalahan ini ketika saya menjalankan pip install -r requirements.txt:

Traceback (most recent call last):
  File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

pkg_resourcestampaknya didistribusikan bersama setuptools. Awalnya saya pikir ini mungkin tidak diinstal ke Python di virtualenv, jadi saya menginstal setuptools 2.6(versi yang sama dengan Python) ke paket situs Python di virtualenv dengan perintah berikut:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

EDIT: Ini hanya terjadi di dalam virtualenv. Jika saya membuka konsol di luar virtualenv maka pkg_resourcesada, tetapi saya masih mendapatkan kesalahan yang sama.

Ada ide mengapa pkg_resourcestidak ada di jalan?

aliran ignite
sumber
Saat memasang nltk, masalah yang sama terjadi. Pertanyaan bagus dan jawaban bermanfaat
laike9m
4
pip uninstall -y setuptoolsdan kemudian pip install setuptools==39.1.0bekerja untuk saya di Anaconda pada Windows 10.
Ryan
1
@Ryan bekerja untuk saya di Ubuntu 16.04 juga, terima kasih, Tuan!
ElectRocnic

Jawaban:

634

Pembaruan Juli 2018

Kebanyakan orang sekarang harus menggunakan pip install setuptools(mungkin dengan sudo).

Beberapa mungkin perlu (re) menginstal python-setuptoolspaket melalui manajer paket mereka ( apt-get install, yum install, dll).

Masalah ini bisa sangat tergantung pada OS Anda dan lingkungan pengembang. Lihat warisan / jawaban lain di bawah ini jika jawaban di atas tidak sesuai untuk Anda.

Penjelasan

Pesan kesalahan ini disebabkan oleh setuptoolspaket Python yang hilang / rusak . Per komentar Matt M. dan setuptools mengeluarkan # 581 , skrip bootstrap yang dirujuk di bawah ini bukan lagi metode instalasi yang disarankan.

Petunjuk skrip bootstrap akan tetap di bawah, jika itu masih bermanfaat bagi siapa pun.

Jawaban Warisan

Saya mengalami hal yang sama ImportErrorhari ini ketika mencoba menggunakan pip. Entah bagaimana setuptoolspaket itu telah dihapus di lingkungan Python saya.

Untuk memperbaiki masalah ini, jalankan skrip pengaturan untuk setuptools:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(atau jika Anda belum wgetmenginstal (mis. OS X), coba

curl https://bootstrap.pypa.io/ez_setup.py | python

mungkin dengan sudodiawali.)

Jika Anda memiliki versi apa pun distribute, atau versi di setuptoolsbawah 0,6, Anda harus mencopotnya terlebih dahulu. *

Lihat Petunjuk Instalasi untuk perincian lebih lanjut.


* Jika Anda sudah memiliki pekerjaan distribute, memutakhirkannya ke "pembungkus kompatibilitas" yang membuat Anda lebih setuptoolsmudah. Tetapi jika semuanya sudah rusak, jangan coba-coba.

cwc
sumber
42
Perpipaan ikal ke perintah lokal selalu membuatku takut, tapi ini berhasil. :) Saya telah menjalankan sudo pythonYMMV.
Nik Reiman
4
Di bawah Cygwin saya harus menginstal paket python-setuptools . Ini mendapat easy_install bekerja kembali, yang telah menderita masalah yang sama. Kemudian saya menggunakan easy_install pippip lagi. Masalah saya muncul dari Cygwin memutakhirkan Python dari 2,6 ke 2,7 di belakang saya saat menginstal sesuatu yang tidak terkait.
Steve Pitchers
5
Ini adalah jawaban terbaik tahun lalu ... tetapi pada pertengahan 2013, distributesudah usang, dan setuptoolsmerupakan penggantinya. Saya akan mengedit jawaban untuk memperbaruinya, tetapi saya tidak yakin itu cara terbaik untuk mengatasinya, sehingga seseorang dapat mengembalikan hasil edit, dalam hal ini: Buka di sini .
abarnert
1
URL ini tidak berfungsi untuk saya tetapi yang ini berhasil: peak.telecommunity.com/dist/ez_setup.py
ajtrichards
1
@ Cerin: Akan lebih bermanfaat bagi semua orang jika Anda mengatakan apa yang terjadi ketika Anda mencoba. Dan apakah Anda menggunakan sudo, seperti yang dicatat oleh @Nik di atas?
Michael Scheper
124
sudo apt-get install --reinstall python-pkg-resources

memperbaikinya untuk saya di Debian. Sepertinya menghapus beberapa paket deb. (Memutar dalam kasus saya) telah melanggar jalur python digunakan untuk menemukan paket

Marek
sumber
9
Saya menggunakan Python 3 jadi saya harus menjalankan sudo apt-get install - install ulang python3-pkg-resources dan yang memperbaikinya. Terima kasih!
Robert Townley
tidak membantu dengan yapf saya kira, ada hubungannya dengan python3 / python2
don bright
53

Saya telah melihat kesalahan ini ketika mencoba menginstal rhodecode ke virtualenv di ubuntu 13.10. Bagi saya solusinya adalah menjalankan

pip install --upgrade setuptools
pip install --upgrade distribute 

sebelum saya menjalankan easy_install rhodecode.

Ali Akdurak
sumber
12
pip install --upgrade setuptoolssendirian melakukan trik untuk saya.
Ryan Tuck
saya perlupip install --upgrade setuptools --user
dfrankow
5
Saya tidak bisa lari pip install --upgrade setuptoolskarena kesalahan yang sama:No module named pkg_resources
McLawrence
1
pip install --upgrade distributemelakukan pekerjaan ketika menggunakan modul venv Python 3. Virtualenv Python 2 mendukung --distributeflag, tetapi kita harus menginstal distributepada lingkungan yang diciptakan oleh venv.
Nirmal
34

Itu juga terjadi pada saya. Saya pikir masalah akan terjadi jika requirement.txt berisi entri "bagikan" sementara virtualenv menggunakan setuptools. Pip akan mencoba untuk menambal alat setup untuk memberikan ruang untuk distribusi, tetapi sayangnya itu akan gagal setengah jalan.

Solusi mudahnya adalah menghapus virtualenv Anda saat ini kemudian buat virtualenv baru dengan argumen --distribute.

Contoh jika menggunakan virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
kereta bayi
sumber
2
ini membantu saya ketika tidak ada solusi lain yang melakukannya (menggunakan Ubuntu 16.04)
MIkee
Untuk lingkungan yang dibuat oleh modul venv Python 3, menjalankan pip install -U distributesetelah mengaktifkan lingkungan akan melakukan pekerjaan.
Nirmal
17

Di CentOS 6 menginstal paket python-setuptools memperbaikinya.

yum install python-setuptools
Paul
sumber
Ini berfungsi di Debian jika ketika Anda mengganti "yum" dengan "sudo apt-get". Juga: sudo apt-get install python3-setuptools
gridtrak
Ini yang melakukannya untuk saya.
Tao Starbow
Saya punya masalah ini pada CentOS 7, dan python-setuptools sudah diinstal, tetapi sudo yum reinstall python-setuptoolsmemperbaikinya.
pemain coneslayer
Melaporkan bug tersebut ke CentOS.org bugs.centos.org/view.php?id=14042
rjt
14

Saya memiliki kesalahan ini sebelumnya dan jawaban dengan nilai tertinggi memberi saya kesalahan saat mencoba mengunduh ez_setup.pyfile. Saya menemukan sumber lain sehingga Anda dapat menjalankan perintah:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

Saya menemukan bahwa saya juga harus menggunakannya sudountuk membuatnya bekerja, jadi Anda mungkin perlu menjalankan:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

Saya juga membuat lokasi lain tempat skrip dapat diunduh:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3

ajtrichards
sumber
Perintah "curl" tidak perlu sudo, jadi bisa juga:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52
1
jawaban ini menyelamatkan saya dengan tambahan "| sudo python", karena "| python" saja tidak bekerja! Terima kasih
patti_jane
14

Setelah mencoba beberapa jawaban ini, kemudian menjangkau seorang kolega, apa yang berhasil bagi saya di Ubuntu 16.04 adalah:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

Dalam kasus saya, itu hanya versi lama bantal 3.1.1 yang mengalami masalah (bantal 4.x berfungsi dengan baik), dan itu sekarang telah diselesaikan!

ptim
sumber
8

Membutuhkan sedikit lebih banyak sudo. Kemudian gunakan easy_install untuk menginstal pip. Bekerja

sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
sudo easy_install pip
Tarion
sumber
1
sudoseharusnya tidak diperlukan dalam virtualenv
igniteflow
Benar, saya baru saja mengalami masalah yang sama tanpa virtualenv.
Tarion
5

Saya memperbaiki kesalahan dengan virtualenv dengan melakukan ini:

Salinan pkg_resources.py dari

/Library/Python/2.7/site-packages/setuptools

untuk

/Library/Python/2.7/site-packages/

Ini mungkin solusi yang murah, tapi itu berhasil untuk saya.

.

Jika alat pengaturan tidak ada, Anda dapat mencoba menginstal paket sistem-situs dengan mengetik virtualenv --system-site-packages /DESTINATION DIRECTORY, mengubah bagian terakhir menjadi direktori yang ingin Anda instal. pkg_rousources.pyakan berada di bawah direktori itu di lib / python2.7 / situs-paket

mrgnw
sumber
ya dalam beberapa proyek, solusi ini yang terbaik (untuk saya)
nguyên
3

Bagi saya, kesalahan ini disebabkan karena saya mempunyai subdirektori bernama "situs"! Saya tidak tahu apakah ini bug pip atau tidak, tetapi saya mulai dengan:

/some/dir/requirements.txt / some / dir / situs /

pip install -r requirement.txt tidak akan berfungsi, beri saya kesalahan di atas!

mengganti nama subfolder dari "situs" menjadi "src" memperbaiki masalahnya! Mungkin pip mencari "paket-situs"? Gila.

jdg
sumber
2

Saya memiliki masalah ini ketika saya telah mengaktifkan virtualenv saya sebagai pengguna yang berbeda dari yang membuatnya. Tampaknya menjadi masalah izin. Saya menemukan ini ketika saya mencoba jawabannya oleh @cwc dan melihat ini di output:

Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied

Beralih kembali ke pengguna yang membuat virtualenv, kemudian menjalankan pip installperintah asli berjalan tanpa masalah. Semoga ini membantu!

Martijn de Milliano
sumber
2

Saya punya masalah ini hari ini juga. Saya hanya punya masalah di dalam virtual env.

Solusi bagi saya adalah menonaktifkan env virtual, menghapus dan kemudian mencopot virtualenv dengan pip dan menginstalnya kembali. Setelah itu saya membuat virtual env baru untuk proyek saya, lalu pip bekerja dengan baik di dalam lingkungan virtual seperti di lingkungan normal.

arno_v
sumber
2

Sepertinya mereka telah pindah dari bitbucket dan sekarang ada di github ( https://github.com/pypa/setuptools )

Perintah untuk menjalankan adalah:

wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
teduh
sumber
File "/python/Python-3.5.1/Lib/urllib/request.py", baris 162, di urlopen return opener.open (url, data, timeout) File "/python/Python-3.5.1/Lib/urllib /request.py ", baris 465, di File terbuka" /python/Python-3.5.1/Lib/urllib/request.py ", baris 488, di _open 'unknown_open', req) File" /python/Python-3.5 .1 / Lib / urllib / request.py ", baris 443, dalam hasil _call_chain = func (* args) File" /python/Python-3.5.1/Lib/urllib/request.py ", baris 1310, dalam kenaikan yang tidak diketahui_open URLError ('jenis url tidak diketahui:% s'% jenis) urllib.error.URLError: <kesalahan urlopen jenis url tidak dikenal: https>
JDOaktown
2

Bagi saya, itu ternyata masalah izin site-packages. Karena ini hanya lingkungan dev saya, saya menaikkan izin dan semuanya berfungsi lagi:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/
kat
sumber
2

Jika Anda menghadapi masalah ini dengan aplikasi yang diinstal melalui conda , solusinya (sebagaimana dinyatakan dalam laporan bug ini) adalah dengan menginstal alat-setup dengan:

conda install setuptools
Gabriel
sumber
2

Di Windows, dengan python 3.7, ini bekerja untuk saya:

pip install --upgrade setuptools --user

--user menginstal paket di direktori home Anda, yang tidak memerlukan hak admin.

David Jablonski
sumber
2

resolusi sederhana adalah bahwa Anda dapat menggunakan conda untuk meningkatkan setuptools atau seluruh lingkungan. (Khusus untuk pengguna windows.)

conda upgrade -c anaconda setuptools

jika setuptools dihapus, Anda perlu menginstal setuptools lagi.

conda install -c anaconda setuptools

jika semua metode ini tidak berfungsi, Anda dapat memutakhirkan conda environment. Tapi saya tidak menyarankan Anda perlu menginstal ulang dan menghapus beberapa paket karena setelah itu akan memperburuk situasi.

weibin Wang
sumber
1

Tampaknya Anda kehilangan alat setup. Beberapa versi virtualenv menggunakan distribusi alih-alih pengaturantools secara default. Gunakan --setuptoolsopsi saat membuat virtualenv atau atur VIRTUALENV_SETUPTOOLS=1di lingkungan Anda.

Danilo Bargen
sumber
1

Dalam kasus saya, saya memiliki 2 versi python yang diinstal pada awalnya dan kemudian saya menghapus yang lebih lama. Jadi sambil menciptakan lingkungan virtual

virtualenv venv

mengacu pada python yang dihapus

Apa yang berhasil untuk saya

python3 -m virtualenv venv

Hal yang sama berlaku ketika Anda mencoba menggunakan pip.

Afsan Abdulali Gujarati
sumber
0

Saya menemukan jawaban ini ketika saya mencoba mengikuti panduan ini untuk OSX . Apa yang berhasil untuk saya adalah, setelah berlari python get-pip, saya juga harus JUGA easy_install pip. Itu memperbaiki masalah tidak bisa menjalankan pip sama sekali. Saya memang memiliki banyak barang macport lama yang diinstal. Itu mungkin bertentangan.

KitsuneYMG
sumber
0

instal ulang setuptoolsdengan:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

maka semuanya akan baik-baik saja.

Scott Yang
sumber
0

Saya menggunakan CentOS 6.7, dan python saya baru saja mengupgrade dari 2.6.6 ke 2.7.11, setelah mencoba begitu banyak jawaban yang berbeda, akhirnya yang berikut berfungsi:

sudo yum install python-devel

Semoga membantu seseorang dalam situasi yang sama.

shellbye
sumber
0

Tidak ada jawaban yang diposting bekerja untuk saya, jadi saya instal ulang pip dan berhasil!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(referensi: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )

pengguna13107
sumber
Traceback (panggilan terakhir terakhir): File "/ usr / bin / easy_install", baris 5, di <module> dari pkg_resources import load_entry_point ImportError: Tidak ada modul bernama 'pkg_resources'
JDOaktown
owner-Dimension-3000 owner # sudo easy_install pip Traceback (panggilan terakhir terakhir): File "/ usr / bin / easy_install", baris 5, dalam <module> dari pkg_resources import load_entry_point ImportError: Tidak ada modul bernama 'pkg_resources' owner-Dimension -3000 pemilik # pip instal --upgrade setuptools Traceback (panggilan terakhir terakhir): File "/ usr / bin / pip", baris 5, dalam <module> dari pkg_resources import load_entry_point ImportError: Tidak ada modul bernama 'pkg_resources' pemilik-Dimensi -3000 pemilik #
JDOaktown
apakah Anda pertama kali menghapus versi pip yang diinstal?
user13107
0

Saya mengalami masalah ini setelah memperbarui pembangunan Ubuntu saya. Tampaknya telah melalui dan menghapus alat pengaturan di semua lingkungan virtual saya.

Untuk memperbaiki ini saya menginstal ulang lingkungan virtual kembali ke direktori target. Ini membersihkan alat pengaturan yang hilang dan membuat semuanya berjalan kembali.

misalnya:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir
Steve D.
sumber
0

Bagi saya perbaikan yang baik adalah menggunakan --no-downloadopsi ke virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxuntuk tox.)

Baczek
sumber
0

Pada Opensuse 42.1 berikut ini memperbaiki masalah ini:

zypper in python-Pygments
David Hamner
sumber
0

ImportError: Tidak ada modul bernama pkg_resources: solusinya adalah menginstal ulang python pip menggunakan Perintah berikut di bawah.

Langkah: 1 Masuk di pengguna root.

sudo su root

Langkah: 2 Hapus paket python-pip jika ada.

apt-get purge -y python-pip

Langkah: 3 Unduh file menggunakan perintah wget (Unduhan file dalam pwd)

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

Langkah: 4 Jalankan file python.

python ./get-pip.py

Langkah: 5 Finalis perintah instalasi exicute.

apt-get install python-pip

Catatan: Pengguna harus root.

Tukadiya Ramesh
sumber
0

Saya mengalami kesalahan itu di lingkungan Google App Engine saya. Dan pip install -t lib setuptoolsmemperbaiki masalah ini.

Murat Çorlu
sumber
0

Jika Anda menggunakan Python 3, Anda harus menggunakan pip3 bukan pip. Perintahnya seperti$ pip3 install requirements.txt

pengguna3266968
sumber