ทำไมฉันไม่สามารถสร้างวงล้อด้วยไพ ธ อนได้?


190

นี่คือคำสั่งที่ฉันใช้:

$ python setup.py bdist_wheel
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: invalid command 'bdist_wheel'

$ pip --version
pip 1.5.6 from /usr/local/lib/python3.4/site-packages (python 3.4)

$ python -c "import setuptools; print(setuptools.__version__)"
2.1

$ python --version
Python 3.4.1

$ which python
/usr/local/bin/python

นอกจากนี้ฉันกำลังเรียกใช้ mac ด้วย python แบบ homebrewed

นี่คือสคริปต์ setup.py ของฉัน: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

ฉันจะบ้าอย่างแน่นอน - ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงไม่ทำงาน


2
และคุณได้ติดตั้งwheelแพคเกจตามคำแนะนำของโทมัสแล้วหรือยัง?
Martijn Pieters

1
ผมมีปัญหาเดียวกัน. แต่ดูเหมือนว่าฉันไม่ได้ใช้ sudo ก่อนที่จะชมเชย หลังจากใช้การยกย่องด้วยสิทธิ์การดูแลระบบ มันทำงานได้
นักล่า

คำตอบ:


301

ติดตั้งwheelแพคเกจก่อน:

pip install wheel

เอกสารไม่มากเกินไปที่ชัดเจนเกี่ยวกับเรื่องนี้ แต่โครงการ "ล้อมีคำสั่ง bdist_wheel สำหรับ setuptools"จริงหมายถึง"ล้อแพคเกจ ..."


1
ดังนั้นการคายไฟล์: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - มันจะทำงานกับระบบปฏิบัติการใด ๆ หรือมีอะไรที่ฉันต้องทำเพื่อให้มันทำงาน? ("แพ็คเกจ" เป็นเพียงการอ้างอิงสำหรับ pip ที่จะติดตั้งในตอนนี้)
vitiral

1
@GarrettLinux ฉันไม่รู้ฉันขอโทษ แต่ฉันขอแนะนำให้คุณถามคำถามแยกต่างหาก )
Thomas Orozco

1
ฉันแก้ไขปัญหานั้นด้วย - การเพิ่มไฟล์ใด ๆ ลงในไฟล์ setup.py ให้เป็นวงล้อทั่วไป ลองดูรหัสที่อัพเดทในคำถามของฉัน
vitiral

คุณสามารถรับข้อผิดพลาดของ OP แม้ว่าจะมีวงล้อติดตั้งอยู่ก็ตามหาก setup.py ใช้ distutils แทน setuptools (สำหรับกรณีของฉัน) ให้ดูคำตอบทางภูมิศาสตร์
Oliver

4
สำหรับฉันปัญหาคือ pip รุ่นเก่า แก้ไขโดยpip install --upgrade pip
Ryu_hayabusa

167

ฉันยังพบข้อผิดพลาด invalid command 'bdist_wheel'

ปรากฎแพคเกจ setup.py ที่ใช้ distutils แทน setuptools การเปลี่ยนดังต่อไปนี้ทำให้ฉันสามารถสร้างวงล้อได้

#from distutils.core import setup
from setuptools import setup

1
ใช่ฉันมีปัญหาครั้งเดียวเช่นกัน! สำคัญมากและข้อความแสดงข้อผิดพลาดไม่ดี
vitiral

@geographika ใช่นี้เป็นคำสั่งยังเอกสารบนdocs.python.org/2/distutils/setupscript.htmlจะทำซ้ำปัญหาที่คุณกำลัง seeig ที่จะใช้ disutils
JamesD

3
อาจจำเป็นต้องเปลี่ยนfrom distutils.core import Extension, Commandเป็นfrom setuptools import Extension, Commandอย่างน้อยสำหรับแพ็คเกจที่ฉันทำงานด้วย
eseglem

ฉันได้รับข้อผิดพลาดนี้สำหรับ pycrypto และไม่ได้นำเข้าการตั้งค่า อย่างไรก็ตามฉันเพิ่มfrom setuptools import setupตอนเริ่มต้นและแก้ไขปัญหาได้
haridsv

38

อัปเดต setuptools ของคุณด้วย

pip install setuptools --upgrade

หากล้มเหลวเช่นกันคุณสามารถลองด้วยการ--forceตั้งค่าสถานะเพิ่มเติม


1
setuptools ของฉันถูกลบออกหรือมีบางอย่างผิดปกติ ดังนั้นฉันต้องทำ: pip install setuptools --upgrade --force
nycynik

12

ฉันก็วิ่งเข้ามาในทันทีทันใดหลังจากที่มันได้ทำงานมาก่อนและมันก็เป็นเพราะฉันอยู่ใน virtualenv และwheelไม่ได้ติดตั้งใน virtualenv


8

อัปเดตpipครั้งแรกของคุณ:

pip install --upgrade pip

สำหรับ Python 3:

pip3 install --upgrade pip

นี่คือคำตอบที่มีประโยชน์ที่สุดตอนนี้ การติดตั้ง pip รุ่นใหม่ไม่ใช้ bdist_wheel ดังนั้นเพียงอัปเกรด pip ให้กับฉันโดยไม่จำเป็นต้องติดตั้ง / อัปเดต setuptools หรือ wheel
theferrit32

4

อาจเป็นได้ว่าคุณมีระบบ python3 เท่านั้น คุณจึงได้ติดตั้งแพคเกจที่จำเป็นผ่าน pip3 ติดตั้งเช่นpip3 ติดตั้งล้อ

คุณจะต้องสร้างสิ่งต่าง ๆ โดยใช้ python3 เป็นพิเศษ

python3 setup.py sdist
python3 setup.py bdist_wheel

ไชโย


4

การขว้างปาในคำตอบอื่น: PYTHONPATHลองตรวจสอบของคุณ

ก่อนอื่นให้ลองติดตั้งwheelอีกครั้ง:

pip install wheel

สิ่งนี้ควรบอกคุณว่าล้ออยู่ที่ไหนติดตั้งเช่น:

Requirement already satisfied: wheel in /usr/local/lib/python3.5/dist-packages

จากนั้นเพิ่มตำแหน่งของวงล้อลงในPYTHONPATH:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages/wheel

ตอนนี้การสร้างล้อควรจะทำงานได้ดี

python setup.py bdist_wheel

2

ฉันลองทุกอย่างพูดที่นี่โดยไม่มีโชค แต่พบวิธีแก้ปัญหา หลังจากรันคำสั่งนี้ (และล้มเหลว):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

ไปที่ไดเรกทอรีชั่วคราวเครื่องมือทำ (ในผลลัพธ์ของคำสั่งที่ผ่านมา) python setup.py bdist_wheelจากนั้นดำเนินการ .whlไฟล์ที่อยู่ในdistโฟลเดอร์

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