Mengapa saya tidak bisa membuat roda dengan python?

190

Berikut adalah perintah yang saya jalankan:

$ 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

Juga, saya menjalankan mac dengan python homebrewed

Ini skrip setup.py saya: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Saya benar-benar gila - saya tidak tahu mengapa ini tidak berhasil.

vital
sumber
2
Dan Anda telah menginstal wheelpaket sesuai saran Thomas?
Martijn Pieters
1
Saya memiliki masalah yang sama. Tapi sepertinya saya tidak menggunakan sudo sebelum memuji. Setelah menggunakan commend dengan izin administrasi. itu berhasil.
pemburu

Jawaban:

301

Instal wheelpaket terlebih dahulu:

pip install wheel

Dokumentasi tidak terlalu jelas tentang hal ini, tetapi "proyek roda menyediakan perintah bdist_wheel untuk setuptools" sebenarnya berarti " paket roda ..." .

Thomas Orozco
sumber
1
Sehingga memuntahkan file: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - akankah ini bekerja dengan OS apa pun, atau adakah hal lain yang harus saya lakukan untuk membuatnya berfungsi? ("paket" hanyalah sekelompok dependensi untuk diinstal oleh pip saat ini)
vitiral
1
@ GarrettLinux Saya tidak tahu, saya minta maaf, tapi saya mendorong Anda untuk mengajukan pertanyaan terpisah untuk itu; )
Thomas Orozco
1
Saya memperbaiki masalah itu juga - menambahkan file apa pun ke file setup.py memberikannya roda umum. Lihat kode yang diperbarui di pertanyaan saya misalnya.
vitiral
Anda bisa mendapatkan kesalahan OP bahkan dengan roda terpasang, jika setup.py entah bagaimana menggunakan distutils alih-alih setuptools (seperti yang terjadi pada saya), lihat jawabannya oleh geografi.
Oliver
4
Bagi saya masalahnya adalah versi lama pip. diperbaiki olehpip install --upgrade pip
Ryu_hayabusa
167

Saya juga menemukan pesan kesalahan invalid command 'bdist_wheel'

Ternyata paket setup.py menggunakan distutils daripada setuptools. Mengubahnya sebagai berikut memungkinkan saya membuat roda.

#from distutils.core import setup
from setuptools import setup
geografi
sumber
1
ya, saya punya masalah itu sekaligus! Sangat penting, dan pesan kesalahan buruk.
vitiral
@geographika ya ini perintah juga dokumentasi di docs.python.org/2/distutils/setupscript.html akan mereplikasi masalah yang Anda lihat saat menggunakan disutils
JamesD
3
Mungkin juga perlu diubah from distutils.core import Extension, Commandke from setuptools import Extension, Commandsetidaknya untuk paket yang saya kerjakan.
eseglem
Saya mendapat kesalahan ini untuk pycrypto dan bahkan tidak mengimpor pengaturan. Namun, saya menambahkan from setuptools import setupdi awal dan itu memperbaiki masalah.
haridsv
38

Perbarui alat setup Anda juga.

pip install setuptools --upgrade

Jika gagal juga, Anda dapat mencoba dengan --forcebendera tambahan .

luckydonald
sumber
1
setuptools saya telah dihapus, atau ada sesuatu yang salah. Jadi saya harus melakukan: pip install setuptools --upgrade --force
nycynik
12

Saya juga mengalami hal ini tiba-tiba, setelah sebelumnya berhasil, dan itu karena saya berada di dalam virtualenv, dan wheeltidak diinstal di virtualenv.

jbg
sumber
8

Perbarui pipdulu:

pip install --upgrade pip

untuk Python 3:

pip3 install --upgrade pip
Tombart
sumber
Ini adalah jawaban yang paling berguna sekarang. Versi baru pemasangan pip tidak menggunakan bdist_wheel, jadi perbarui saja pip bekerja untuk saya, tanpa perlu menginstal / memperbarui setuptools atau roda
theferrit32
4

Bisa juga Anda hanya memiliki sistem python3. Karena itu Anda telah menginstal paket yang diperlukan melalui instalasi pip3, seperti roda instalasi pip3 .

Anda harus membuat barang-barang Anda menggunakan python3 secara khusus.

python3 setup.py sdist
python3 setup.py bdist_wheel

Bersulang.

Bart Dorlandt
sumber
4

Melontarkan jawaban lain: Coba periksa PYTHONPATH.

Pertama, coba pasang wheellagi:

pip install wheel

Ini akan memberi tahu Anda di mana roda dipasang, misalnya:

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

Kemudian tambahkan lokasi roda ke PYTHONPATH:

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

Sekarang membangun roda seharusnya bekerja dengan baik.

python setup.py bdist_wheel
avidreader610
sumber
2

Saya mencoba semua yang dikatakan di sini tanpa hasil, tetapi menemukan solusi. Setelah menjalankan perintah ini (dan gagal):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Pergi ke direktori sementara alat yang dibuat (diberikan dalam output dari perintah terakhir), kemudian jalankan python setup.py bdist_wheel. The .whlfile dalam distfolder.

Aigrefin
sumber