ไม่มีโมดูลชื่อ pkg_resources


452

ฉันกำลังปรับใช้แอป Django กับเซิร์ฟเวอร์ dev และกำลังกดปุ่มข้อผิดพลาดนี้เมื่อฉันเรียกใช้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_resourcessetuptoolsดูเหมือนจะกระจายกับ ตอนแรกฉันคิดว่าสิ่งนี้อาจไม่ได้รับการติดตั้งใน Python ใน virtualenv ดังนั้นฉันจึงติดตั้งsetuptools 2.6(รุ่นเดียวกับ Python) กับ Python site-packages ใน virtualenv ด้วยคำสั่งต่อไปนี้:

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

แก้ไข:สิ่งนี้เกิดขึ้นภายใน virtualenv เท่านั้น หากฉันเปิดคอนโซลนอก virtualenv pkg_resourcesแสดงว่ามี แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน

ความคิดใด ๆ เกี่ยวกับสาเหตุที่pkg_resourcesไม่ได้อยู่บนเส้นทาง?


เมื่อติดตั้ง nltk ปัญหาเดียวกันจะเกิดขึ้นคำถามที่ดีและคำตอบที่เป็นประโยชน์
laike9m

4
pip uninstall -y setuptoolsจากนั้นpip install setuptools==39.1.0ทำงานให้ฉันใน Anaconda บน Windows 10
Ryan

1
@ Ryan ทำงานให้ฉันบน Ubuntu 16.04 เช่นกันขอบคุณครับท่าน!
ElectRocnic

คำตอบ:


634

อัปเดตกรกฎาคม 2561

ตอนนี้คนส่วนใหญ่ควรใช้pip install setuptools(อาจมีsudo)

บางคนอาจจำเป็นต้อง (อีกครั้ง) ติดตั้งpython-setuptoolsแพคเกจผ่านทางผู้จัดการแพคเกจของพวกเขา ( apt-get install, yum installฯลฯ )

ปัญหานี้อาจขึ้นอยู่กับ OS และสภาพแวดล้อม dev ของคุณเป็นอย่างมาก ดูคำตอบเดิม / คำตอบอื่น ๆ ด้านล่างหากข้อมูลด้านบนไม่ได้ผลสำหรับคุณ

คำอธิบาย

ข้อความแสดงข้อผิดพลาดนี้เกิดจากsetuptoolsแพ็คเกจPython ที่ขาดหายไป ตามความคิดเห็นของ Matt M. และปัญหา setuptools # 581สคริปต์ bootstrap ที่อ้างถึงด้านล่างนี้ไม่ใช่วิธีการติดตั้งที่แนะนำอีกต่อไป

คำแนะนำสคริปต์ bootstrap จะยังคงอยู่ด้านล่างในกรณีที่ยังเป็นประโยชน์กับทุกคน

คำตอบเดิม

ฉันพบกันImportErrorวันนี้ในขณะที่พยายามใช้ pip ยังไงก็ตามsetuptoolsแพ็คเกจก็ถูกลบไปในสภาพแวดล้อม Python ของฉัน

ในการแก้ไขปัญหาให้เรียกใช้สคริปต์การตั้งค่าสำหรับsetuptools:

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

(หรือหากคุณไม่ได้wgetติดตั้ง (เช่น OS X) ให้ลอง

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

อาจมีsudoไว้ล่วงหน้า)

หากคุณมีเวอร์ชั่นใด ๆdistributeหรือsetuptoolsต่ำกว่า 0.6 คุณจะต้องถอนการติดตั้งก่อน

ดูคำแนะนำการติดตั้งสำหรับรายละเอียดเพิ่มเติม


* หากคุณมีการทำงานอยู่distributeแล้วอัปเกรดเป็น "wrapper ความเข้ากันได้" ที่เปลี่ยนคุณไปsetuptoolsเป็นเรื่องง่าย แต่ถ้าสิ่งต่าง ๆ พังแล้วอย่าลองทำดู


42
การไปที่คำสั่งในเครื่องจะทำให้ฉันกลัว แต่สิ่งนี้ใช้ได้ผลดีมาก :) ฉันวิ่งไปsudo pythonทั้งๆที่ YMMV
Nik Reiman

4
ภายใต้ Cygwin ฉันต้องติดตั้งแพ็คเกจpython-setuptools นี่ทำให้easy_installทำงานได้อีกครั้งซึ่งประสบปัญหาเดียวกัน จากนั้นฉันก็easy_install pipจะทำให้ pip ทำงานได้อีกครั้ง ปัญหาของฉันเกิดขึ้นจาก Cygwin การอัพเกรด Python จาก 2.6 เป็น 2.7 ด้านหลังขณะติดตั้งบางอย่างที่ไม่เกี่ยวข้อง
Steve Pitchers

5
นี่เป็นคำตอบที่ดีที่สุดเมื่อปีที่แล้ว แต่เมื่อกลางปี ​​2556 distributeล้าสมัยและsetuptoolsเป็นผู้สืบทอด ฉันจะแก้ไขคำตอบที่จะปรับปรุงมัน แต่ผมไม่แน่ใจว่าเป็นวิธีที่ดีที่สุดที่จะจัดการกับมันดังนั้นบางคนอาจย้อนกลับไปแก้ไขซึ่งในกรณี: ไปที่นี่
abarnert

1
URL นี้ใช้ไม่ได้สำหรับฉัน แต่อันนี้ใช้งานได้: peak.telecommunity.com/dist/ez_setup.py
ajtrichards

1
@Cerin: มันจะมีประโยชน์มากขึ้นสำหรับทุกคนถ้าคุณพูดว่าเกิดอะไรขึ้นเมื่อคุณพยายาม และคุณใช้sudoตามที่ @Nik ระบุไว้ข้างต้นหรือไม่
Michael Scheper

125
sudo apt-get install --reinstall python-pkg-resources

แก้ไขให้ฉันใน Debian ดูเหมือนว่าการถอนการติดตั้งแพคเกจ. deb บางตัว (ชุดที่บิดในกรณีของฉัน) ทำให้เส้นทางที่ใช้ในการค้นหาแพคเกจหลาม


10
ฉันใช้ Python 3 ดังนั้นฉันจึงต้องเรียกใช้ sudo apt-get install - ติดตั้ง python3-pkg-resources อีกครั้งแล้วติดตั้งใหม่ ขอบคุณ!
Robert Townley

ไม่ได้ความช่วยเหลือเกี่ยวกับ yapf ผมคิดว่าสิ่งที่จะทำอย่างไรกับ python3 / python2
don สดใส

53

ฉันได้เห็นข้อผิดพลาดนี้ในขณะที่พยายามติดตั้ง rhodecode เป็น virtualenv บน Ubuntu 13.10 สำหรับฉันทางออกคือการทำงาน

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

ก่อนที่ฉันจะเรียกใช้ easy_install rhodecode


12
pip install --upgrade setuptoolsคนเดียวก็หลอกให้ฉัน
Ryan Tuck

ฉันต้องการpip install --upgrade setuptools --user
dfrankow

5
ฉันไม่สามารถทำงานได้pip install --upgrade setuptoolsเนื่องจากข้อผิดพลาดเดียวกัน:No module named pkg_resources
McLawrence

1
pip install --upgrade distributeทำงานเมื่อใช้โมดูล venv ของ Python 3 virtualenv สนับสนุนหลาม 2 --distributeธง แต่หนึ่งที่มีการติดตั้งในสภาพแวดล้อมที่สร้างขึ้นโดยdistribute venv
Nirmal

34

มันเกิดขึ้นกับฉันด้วย ฉันคิดว่าปัญหาจะเกิดขึ้นหาก requirements.txt มีรายการ "แจกจ่าย" ในขณะที่ virtualenv ใช้ setuptools Pip จะพยายาม patch setools เพื่อให้มีพื้นที่สำหรับแจกจ่าย แต่น่าเสียดายที่มันจะล้มเหลวครึ่งทาง

ทางออกที่ง่ายคือลบ virtualenv ปัจจุบันของคุณจากนั้นสร้าง virtualenv ใหม่พร้อมกับ - อาร์กิวเมนต์แจกแจง

ตัวอย่างถ้าใช้ virtualenvwrapper:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

2
สิ่งนี้ช่วยฉันได้เมื่อไม่มีวิธีแก้ไขปัญหาอื่น (ใช้ Ubuntu 16.04)
MIkee

สำหรับสภาพแวดล้อมที่สร้างขึ้นโดยโมดูล venv ของ Python 3 การทำงานpip install -U distributeหลังจากเปิดใช้งานสภาพแวดล้อมจะทำงานได้
Nirmal

17

ใน CentOS 6 การติดตั้งแพ็คเกจ python-setuptools แก้ไข

yum install python-setuptools

สิ่งนี้ใช้ได้ใน Debian ถ้าเมื่อคุณแทนที่ "yum" ด้วย "sudo apt-get" ยัง: sudo apt-get install python3-setuptools
gridtrak

นี่คือสิ่งที่ทำเพื่อฉัน
Tao Starbow

ฉันมีปัญหานี้ใน CentOS 7 และ python-setuptools ได้รับการติดตั้งแล้ว แต่sudo yum reinstall python-setuptoolsแก้ไขได้
ร่วมประชุม

รายงานข้อบกพร่องไปยัง CentOS.org bugs.centos.org/view.php?id=14042
rjt

14

ฉันพบข้อผิดพลาดก่อนหน้านี้และคำตอบที่ได้รับคะแนนสูงสุดทำให้ฉันมีข้อผิดพลาดในการพยายามดาวน์โหลดez_setup.pyไฟล์ ฉันพบแหล่งอื่นเพื่อให้คุณสามารถเรียกใช้คำสั่ง:

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

ฉันพบว่าฉันต้องใช้sudoเพื่อให้มันทำงานได้ดังนั้นคุณอาจต้องเรียกใช้:

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

ฉันได้สร้างตำแหน่งที่ตั้งอื่นที่สามารถดาวน์โหลดสคริปต์จาก:

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


คำสั่ง "curl" ไม่จำเป็นต้องใช้ sudo ดังนั้นจึงอาจเป็น:curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python
tombrown52

1
คำตอบนี้ช่วยฉันด้วย "| sudo python" นอกจากนี้เพราะ "| python" เพียงอย่างเดียวไม่ทำงาน! ขอบคุณ
patti_jane

14

หลังจากลองคำตอบเหล่านี้หลายข้อจากนั้นก็ยื่นมือออกไปหาเพื่อนร่วมงานสิ่งที่ใช้ได้กับฉันใน Ubuntu 16.04 คือ:

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

ในกรณีของฉันมันเป็นเพียงหมอนรุ่นเก่า 3.1.1 ที่มีปัญหา (หมอน 4.x ทำงานได้ดี) และนั่นก็แก้ปัญหาแล้ว!


8

ต้องการ sudo เพิ่มอีกนิด จากนั้นใช้ easy_install เพื่อติดตั้ง pip โรงงาน

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

1
sudoไม่ควรต้องใช้ใน virtualenv
igniteflow

จริงฉันเพิ่งมีปัญหาเดียวกันโดยไม่ต้อง virtualenv
Tarion

5

ฉันแก้ไขข้อผิดพลาดกับ virtualenv โดยทำสิ่งนี้:

คัดลอก pkg_resources.py จาก

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

ถึง

/Library/Python/2.7/site-packages/

นี่อาจเป็นวิธีแก้ปัญหาราคาถูก แต่ก็ใช้ได้สำหรับฉัน

.

หากไม่มีเครื่องมือตั้งค่าคุณสามารถลองติดตั้ง system-site-packages โดยพิมพ์virtualenv --system-site-packages /DESTINATION DIRECTORYเปลี่ยนส่วนสุดท้ายเป็นไดเรกทอรีที่คุณต้องการติดตั้ง pkg_rousources.pyจะอยู่ภายใต้ไดเรกทอรีนั้นใน lib / python2.7 / site-packages


ใช่ในบางโครงการการแก้ปัญหานี้ดีที่สุด (สำหรับฉัน)
38990

3

สำหรับฉันข้อผิดพลาดนี้เกิดขึ้นเพราะฉันมีไดเรกทอรีย่อยที่เรียกว่า "เว็บไซต์"! ฉันไม่รู้ว่านี่เป็นข้อผิดพลาด pip หรือไม่ แต่ฉันเริ่มต้นด้วย:

/some/dir/requirements.txt / some / dir / site /

pip install -r requirements.txt ไม่ทำงานให้ข้อผิดพลาดด้านบนกับฉัน!

การเปลี่ยนชื่อโฟลเดอร์ย่อยจาก "site" เป็น "src" ช่วยแก้ปัญหา! บางที pip กำลังมองหา "site-packages"? บ้า.


2

ฉันมีปัญหานี้เมื่อฉันเปิดใช้งาน virtualenv ของฉันในฐานะผู้ใช้ที่แตกต่างจากผู้ที่สร้างมันขึ้นมา ดูเหมือนว่าจะมีปัญหาสิทธิ์ ฉันค้นพบสิ่งนี้เมื่อฉันลองตอบโดย @cwc และเห็นสิ่งนี้ในผลลัพธ์:

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

สลับกลับไปยังผู้ใช้ที่สร้าง virtualenv จากนั้นเรียกใช้pip installคำสั่งเดิมไปโดยไม่มีปัญหา หวังว่านี่จะช่วยได้!


2

ฉันมีปัญหานี้ในวันนี้เช่นกัน ฉันมีปัญหาภายใน env เสมือน

ทางออกสำหรับฉันคือการปิดการใช้งาน env เสมือนการลบและถอนการติดตั้ง virtualenv ด้วย pip และติดตั้งใหม่ หลังจากนั้นฉันสร้าง env เสมือนใหม่สำหรับโครงการของฉันจากนั้น pip ก็ทำงานได้ดีทั้งในสภาพแวดล้อมเสมือนในสภาพแวดล้อมปกติ


2

ดูเหมือนว่าพวกเขาจะย้ายออกจาก bitbucket และตอนนี้อยู่ใน GitHub ( https://github.com/pypa/setuptools )

คำสั่งให้เรียกใช้คือ:

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

ไฟล์ "/python/Python-3.5.1/Lib/urllib/request.py", บรรทัดที่ 162, ใน urlopen return opener.open (url, data, timeout) ไฟล์ "/python/Python-3.5.1/Lib/urllib /request.py ", บรรทัด 465, ในไฟล์เปิด" /python/Python-3.5.1/Lib/urllib/request.py ", บรรทัด 488, ใน _open 'unknown_open', req) ไฟล์" /python/Python-3.5 .1 / Lib / urllib / request.py ", บรรทัด 443, ใน _call_chain result = func (* args) ไฟล์" /python/Python-3.5.1/Lib/urllib/request.py ", บรรทัดที่ 1310, ในการเพิ่ม unknown_open URLError ('ประเภท URL ที่ไม่รู้จัก:% s'% ประเภท) urllib.error.URLError: <ข้อผิดพลาด urlopen ประเภท URL ที่ไม่รู้จักที่ไม่รู้จัก: https>
JDOaktown

2

site-packagesสำหรับผมแล้วมันจะกลายเป็นปัญหาสิทธิ์ใน เนื่องจากเป็นเพียงสภาพแวดล้อม dev ของฉันฉันจึงเพิ่มการอนุญาตและทุกอย่างทำงานได้อีกครั้ง:

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


2

บน Windows ด้วย python 3.7 สิ่งนี้ใช้ได้กับฉัน:

pip install --upgrade setuptools --user

--user ติดตั้งแพ็คเกจในโฮมไดเร็กตอรี่ของคุณ, ซึ่งไม่ต้องการสิทธิ์ผู้ดูแลระบบ


2

วิธีแก้ไขปัญหาง่ายๆคือคุณสามารถใช้ conda เพื่ออัปเกรด setuptools หรือสภาพแวดล้อมทั้งหมด (พิเศษสำหรับผู้ใช้ windows)

conda upgrade -c anaconda setuptools

หาก setuptools ถูกลบคุณจะต้องติดตั้ง setuptools อีกครั้ง

conda install -c anaconda setuptools

หากวิธีการทั้งหมดนี้ใช้ไม่ได้คุณสามารถอัพเกรดสภาพแวดล้อมของ conda แต่ฉันไม่แนะนำให้คุณต้องติดตั้งและถอนการติดตั้งแพคเกจบางอย่างเพราะหลังจากนั้นมันจะทำให้สถานการณ์แย่ลง


1

เห็นได้ชัดว่าคุณหายไป setuptools virtualenv บางเวอร์ชันใช้การแจกจ่ายแทน setuptools เป็นค่าเริ่มต้น ใช้--setuptoolsตัวเลือกเมื่อสร้าง virtualenv หรือตั้งค่าVIRTUALENV_SETUPTOOLS=1ในสภาพแวดล้อมของคุณ


1

ในกรณีของฉันฉันได้ติดตั้งงูหลาม 2 รุ่นในตอนแรกและต่อมาฉันได้ลบรุ่นเก่าออก ดังนั้นในขณะที่สร้างสภาพแวดล้อมเสมือนจริง

virtualenv venv

อ้างถึง python ที่ถอนการติดตั้ง

อะไรที่เหมาะกับฉัน

python3 -m virtualenv venv

เหมือนกันเป็นจริงเมื่อคุณพยายามใช้ pip


0

ฉันมาข้ามคำตอบนี้เมื่อผมพยายามที่จะทำตามคำแนะนำนี้สำหรับ OSX สิ่งที่ทำงานสำหรับฉันคือหลังจากที่ทำงานผมต้องยังpython get-pip easy_install pipนั่นแก้ไขปัญหาที่ไม่สามารถเรียกใช้ pip ได้เลย ฉันไม่ได้มีพวงของสิ่ง macport เก่าที่ติดตั้ง ที่อาจมีความขัดแย้ง



0

เพียงติดตั้งใหม่setuptoolsโดย:

$ 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

จากนั้นทุกอย่างจะเรียบร้อย


0

ฉันใช้ CentOS 6.7 และไพ ธ อนของฉันเพิ่งอัพเกรดจาก 2.6.6 เป็น 2.7.11 หลังจากลองคำตอบที่แตกต่างกันมากมายจนในที่สุดก็ตอบคำถามต่อไปนี้:

sudo yum install python-devel

หวังว่าจะช่วยคนในสถานการณ์เดียวกัน


0

คำตอบที่โพสต์ไม่ได้ผลสำหรับฉันดังนั้นฉันจึงติดตั้งจุดเล็ก ๆ แล้วใช้งานได้!

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

sudo easy_install pip 

pip install --upgrade setuptools

(การอ้างอิง: http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/ )


Traceback (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "/ usr / bin / easy_install", บรรทัดที่ 5 ใน <module> จาก pkg_resources import load_entry_point ImportError: ไม่มีโมดูลชื่อ 'pkg_resources'
JDOaktown

owner-Dimension-3000 owner # sudo easy_install pip Traceback (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "/ usr / bin / easy_install", บรรทัด 5, ใน <module> จาก pkg_resources นำเข้า load_entry_point ImportError: ไม่มีโมดูลชื่อ 'pkg_resources' Dimension -3000 owner # pip install - อัพเกรด setuptools การติดตามย้อนกลับ (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "/ usr / bin / pip", บรรทัด 5, ใน <module> จาก pkg_resources นำเข้า load_entry_point ImportError: ไม่มีโมดูลชื่อ 'pkg_resources' ขนาดมิติ -3000 owner #
JDOaktown

คุณไม่ได้ลบรุ่น pip ที่ติดตั้งครั้งแรก?
user13107

0

ฉันพบปัญหานี้หลังจากอัปเดตงานสร้างของ Ubuntu ดูเหมือนว่าจะผ่านและลบชุดเครื่องมือในสภาพแวดล้อมเสมือนจริงทั้งหมดของฉัน

เพื่อแก้ไขปัญหานี้ฉันได้ติดตั้งสภาพแวดล้อมเสมือนกลับเข้าไปในไดเรกทอรีเป้าหมาย การทำความสะอาดเครื่องมือตั้งค่าที่ขาดหายไปและทำให้สิ่งต่าง ๆ ทำงานได้อีกครั้ง

เช่น:

~/RepoDir/TestProject$ virtualenv TestEnvironmentDir

0

สำหรับฉันการแก้ไขที่ดีคือการใช้--no-downloadตัวเลือกเพื่อ virtualenv ( VIRTUALENV_NO_DOWNLOAD=1 toxสำหรับ tox.)



0

ImportError: ไม่มีโมดูลชื่อ pkg_resources:วิธีแก้ปัญหาคือการติดตั้ง python pip ใหม่โดยใช้คำสั่งต่อไปนี้

ขั้นตอนที่: 1เข้าสู่ระบบในผู้ใช้รูท

sudo su root

ขั้นตอน: 2ถอนการติดตั้งแพ็คเกจ python-pip ถ้ามีอยู่

apt-get purge -y python-pip

ขั้นตอน: 3ดาวน์โหลดไฟล์โดยใช้คำสั่ง wget (ดาวน์โหลดไฟล์ในpwd)

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

ขั้นตอน: 4เรียกใช้ไฟล์หลาม

python ./get-pip.py

ขั้นตอน: 5คำสั่งการติดตั้งสุดท้าย exicute

apt-get install python-pip

หมายเหตุ:ผู้ใช้จะต้องเป็นรูท


0

ฉันพบข้อผิดพลาดนั้นในสภาพแวดล้อมของ Google App Engine และpip install -t lib setuptoolsแก้ไขปัญหา


0

หากคุณใช้ Python 3 คุณควรใช้ pip3 แทน pip คำสั่งดูเหมือนว่า$ pip3 install requirements.txt

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