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.


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 ..." .


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

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 .


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.


8

Perbarui pipdulu:

pip install --upgrade pip

untuk Python 3:

pip3 install --upgrade pip

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.


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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.