Python 3: ImportError“ ไม่มีโมดูลชื่อ Setuptools”


283

ฉันมีปัญหากับการติดตั้งแพ็คเกจใน Python 3

ฉันติดตั้งแพ็คเกจด้วยsetup.py installเสมอ แต่ตอนนี้เมื่อฉันพยายามติดตั้งแพคเกจ ansicolors ฉันได้รับ:

importerror "ไม่มีโมดูลชื่อ Setuptools"

ฉันไม่รู้ว่าจะทำอย่างไรเพราะฉันไม่เคยติดตั้ง setuptools มาก่อน ถึงกระนั้นฉันก็สามารถติดตั้งแพคเกจจำนวนมากsetup.py installโดยไม่ต้อง setuptools ทำไมฉันถึงต้องเซ็ตอัพเครื่องมือตอนนี้

ฉันไม่สามารถติดตั้ง setuptools ได้เพราะฉันมี Python 3.3 และ setuptools ไม่รองรับ Python 3

เหตุใดคำสั่งติดตั้งของฉันจึงไม่ทำงานอีกต่อไป

คำตอบ:


532

คุณต้องการของไฟล์setup.py setuptoolsแพ็กเกจ Python บางตัวเคยใช้เพื่อการdistutilsแจกจ่าย แต่ส่วนใหญ่ตอนนี้ใช้setuptoolsเป็นแพ็คเกจที่สมบูรณ์กว่า นี่คือคำถามเกี่ยวกับความแตกต่างระหว่างพวกเขา

วิธีติดตั้งsetuptoolsบน Debian:

sudo apt-get install python3-setuptools

สำหรับ Python เวอร์ชั่นเก่า (Python 2.x):

sudo apt-get install python-setuptools

1
ขอบคุณสำหรับโพสต์นี้ .. ช่วยฉันได้มาก .. ผู้คนมากมายให้คำแนะนำ setuptools แต่มันเป็นไปไม่ได้ที่จะติดตั้งใน py3.3 .. การแจกจ่ายผลงานเหมือนจับใจ
piggy

22
ฉันต้องติดตั้งด้วย "python3" เพื่อให้มันทำงาน:sudo apt-get install python3-setuptools
D.Steinel

1
ฉันติดตั้งpython3 python3-pip python3-setuptoolsแล้วและใช้งานได้ ขอบคุณ
warchantua

3
ด้วยเหตุผลบางอย่างใน Ubuntu 18.04 apt-get install python3-setuptoolsมันไม่ได้ทำงานร่วมกับ
loretoparisi

1
@loretoparisi ฉันมีปัญหาเดียวกันนี้คุณหาวิธีแก้ปัญหาสำหรับ Ubuntu 18.04 หรือไม่?
Scott

91

แก้ไข: หน้า setuptoolsทางการdox :

หากคุณติดตั้ง Python 2> = 2.7.9 หรือ Python 3> = 3.4 จาก python.org คุณจะมี pip และ setuptools อยู่แล้ว แต่จะต้องอัพเกรดเป็นเวอร์ชั่นล่าสุด:

บน Linux หรือ OS X:

pip install -U pip setuptools 

บน Windows:

python -m pip install -U pip setuptools

ดังนั้นส่วนที่เหลือของโพสต์นี้อาจล้าสมัย (เช่นบางลิงค์ไม่ทำงาน)

Distribute - เป็นทางแยก setuptools ซึ่ง "ให้การสนับสนุน Python 3" คำแนะนำการติดตั้งสำหรับการแจกจ่าย (setuptools) + pip:

curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip

ปัญหาที่คล้ายกันที่นี่

อัปเดต: การแจกจ่ายดูเหมือนจะล้าสมัยเช่นถูกรวมเข้าไปใน Setuptools: การแจกจ่ายเป็นทางแยกที่คัดค้านโครงการ Setuptools ตั้งแต่ Setuptools 0.7 รีลีส Setuptools และ Distribute ได้ถูกรวมเข้าด้วยกันและการกระจายจะไม่ถูกดูแลรักษาอีกต่อไป ความพยายามอย่างต่อเนื่องทั้งหมดควรอ้างอิงโครงการ Setuptools และเอกสารประกอบของ Setuptools

คุณอาจลองด้วยคำแนะนำที่พบในหน้า setuptools pypi (ฉันยังไม่ได้ทดสอบสิ่งนี้ขออภัย :():

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
easy_install pip

1
ขอบคุณมากฉันไม่แน่ใจว่าวิธีนี้แก้ไขปัญหาของฉันได้อย่างไร ทันที! ฉันมีปัญหาร้ายแรงที่พยายามติดตั้งการกระจาย สิ่งนี้จะต้องบังคับให้ติดตั้งอย่างใดอย่างหนึ่งsudo pip install distributeจะไม่ทำงาน ปัญหาของฉันได้รับการบันทึกไว้ที่stackoverflow.com/questions/16846742/…
Deepend

1
ใช้งานได้ข้ามแพลตฟอร์ม (Win) ในขณะที่คำตอบที่ยอมรับไม่สามารถใช้ได้ ขอบคุณ!
fundead

อย่างจริงจังผู้ชายคนนี้ต้องการเครดิตมากกว่าที่ได้รับ เขาเพิ่งบันทึกวันของฉัน
Stephn_R

1
URLS ไม่ถูกต้องอีกต่อไป .. คุณช่วยกรุณาตรวจสอบได้ไหม
mebada

22

ฉันกำลังทำสิ่งนี้ภายใน virtualenv บน Oracle Linux 6.4 โดยใช้ python-2.6 ดังนั้นโซลูชันที่ใช้ apt จึงไม่ใช่ตัวเลือกสำหรับฉันและไม่เป็นแนวคิดของ python-2.7 การแก้ไขของฉันคือการอัพเกรด setuptools เวอร์ชันที่ติดตั้งโดย virtualenv:

pip install --upgrade setuptools

หลังจากนั้นฉันสามารถติดตั้งแพ็คเกจลงใน virtualenv ได้ ฉันรู้ว่าคำถามนี้ได้เลือกคำตอบไว้แล้ว แต่ฉันหวังว่าคำตอบนี้จะช่วยผู้อื่นในสถานการณ์ของฉัน


1
หมายเหตุมันมีปัญหา "ไม่สามารถลบรายการจากไฟล์ที่ไม่มีอยู่ ... " การเพิ่ม --ignore-installed ไปยังคำสั่งด้านบนแก้ไขได้
Kiki Jewell

10

pip uninstall setuptools

แล้ว:

pip install setuptools

สิ่งนี้ใช้ได้สำหรับฉันและแก้ไขปัญหาของฉัน


สิ่งนี้ได้ผลสำหรับฉัน! ยังไงก็เถอะ setuptools ของฉันเป็นรุ่นที่เก่ากว่า 28.8 การถอนการติดตั้งและติดตั้งใหม่นี้บังคับให้อัปเดตเป็นรุ่น 48 จากนั้นทุกอย่างทำงานได้ดี
โจเซฟลี

4

distributeแพ็คเกจดังกล่าวเป็นรุ่นที่รองรับ Python 3 setuptools: http://pypi.python.org/pypi/distribute

นอกจากนี้ยังใช้pipเพื่อติดตั้งโมดูล มันจะค้นหาการพึ่งพาโดยอัตโนมัติและติดตั้งให้คุณ

มันใช้งานได้ดีสำหรับฉันด้วยแพ็คเกจของคุณ:

[~] pip --version                                                              
pip 1.2.1 from /usr/lib/python3.3/site-packages (python 3.3)
[~] sudo pip install ansicolors                                                
Downloading/unpacking ansicolors
  Downloading ansicolors-1.0.2.tar.gz
  Running setup.py egg_info for package ansicolors

Installing collected packages: ansicolors
  Running setup.py install for ansicolors

Successfully installed ansicolors
Cleaning up...
[~]

3

วินโดว 7:

ผมได้ให้โซลูชั่นที่สมบูรณ์ที่นี่สำหรับหลามซีลีเนียม webdriver

1. Setup easy install (windows - simplified)
    a. download ez.setup.py (https://bootstrap.pypa.io/ez_setup.py) from 'https://pypi.python.org/pypi/setuptools'
    b. move ez.setup.py to C:\Python27\
    c. open cmd prompt
    d. cd C:\Python27\
    e. C:\Python27\python.exe ez.setup.py install

1

PyPA แนะนำpipเครื่องมือสำหรับการติดตั้งและการจัดการแพคเกจงูใหญ่ pipรวมอยู่ใน Python 3.4 ( PEP 453 ) แต่สำหรับรุ่นเก่านี่คือวิธีการติดตั้ง (บน Windows):

ดาวน์โหลดhttps://bootstrap.pypa.io/get-pip.py

>c:\Python33\python.exe get-pip.py
Downloading/unpacking pip
Downloading/unpacking setuptools
Installing collected packages: pip, setuptools
Successfully installed pip setuptools
Cleaning up...

>c:\Python33\Scripts\pip.exe install pymysql
Downloading/unpacking pymysql
Installing collected packages: pymysql
Successfully installed pymysql
Cleaning up...

0

ไม่กี่ปีที่ผ่านมาฉันได้รับโครงการหลาม (2.7.1) ที่ทำงานภายใต้ Django-1.2.3 และตอนนี้ถูกขอให้ปรับปรุงด้วยความเป็นไปได้ของ QR มีปัญหาเดียวกันและไม่พบ pip หรือ apt-get อย่างใดอย่างหนึ่ง ดังนั้นฉันจึงแก้ไขมันด้วยวิธีที่แตกต่างกันโดยสิ้นเชิง แต่ง่าย I / bin / vi-ed setup.py และเปลี่ยนบรรทัด "จาก setuptools import setup" เป็น: "from distutils.core การตั้งค่าการนำเข้า" นั่นทำให้ฉันแล้วดังนั้นฉันคิดว่าฉันควรโพสต์สิ่งนี้สำหรับผู้ใช้อื่นที่ใช้ pythons เก่า . ขอแสดงความนับถือ Roger Vermeir

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