为什么python setup.py在Travis CI上说无效命令'bdist_wheel'?


330

我的Python软件包具有一个setup.py在本地配置时可以在Ubuntu Trusty和新的Vagrant Ubuntu Trusty VM上正常运行的软件包:

sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
sudo -H pip install setuptools wheel virtualenv --upgrade

但是,当我在Travis CI Trusty Beta VM上执行相同操作时:

- sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
- curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
- sudo -H pip install setuptools wheel virtualenv --upgrade

我得到:

python2.7 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'

为什么我不能在python中创建轮子?是相关的,但请注意,我正在安装滚轮并升级setuptools。

Answers:


469

不得不安装该wheel软件包。一切都是最新的,但仍然给出错误。

pip install wheel

然后

python setup.py bdist_wheel 

工作没有问题。


59
“ pip安装轮”有时就足够了
oxidworks '18

20
我需要pip3 install wheel-因为我已经安装了车轮,pip但没有pip3
TetraDev

2
这行得通,但是在pip install wheel我不得不pip uninstall -r requirements.txt重做之后pip install -r requirements.txt
simple_code

9
can't open file 'setup.py': [Errno 2] No such file or directory
塞林(Cerin)

4
有没有办法wheel在干净的虚拟环境中自动安装?python3 -m venv --system-site-packages将添加过多的程序包。
Tobias Sette

83
pip install wheel

为我工作,但您也可以添加此内容

setup(
    ...
    setup_requires=['wheel']
)

来setup.py并保存点子安装命令


2
那些人已经安装了车轮,并且仍然出错,可以添加setup_requires=['wheel']以消除此错误
Shankar Pandala

1
这不能按预期方式工作:1-首先,它仅由于我们已经安装wheel了pip 而起作用。在全新安装中它将再次失败2- 文档说:“注意:setup_requires中列出的项目不会自动安装在运行安装脚本的系统上。”
Tobias Sette

不仅如此,@ TobiasSette,而且相同的文档链接说:“不建议使用setup_requires警告以支持PEP-518。”
Jeff Wright

71

2020年1月

浪费了2个小时。

在AWS上Ubuntu 18.04 new machine,需要进行以下安装:

sudo apt-get install gcc libpq-dev -y
sudo apt-get install python-dev  python-pip -y
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
pip3 install wheel

特别是最后一行是必须的。
但是,可能需要3行之前。

希望能有所帮助。


2
恰好一年后,您为我省去了很多麻烦。谢谢。
DaveTheMinion

7
--no-install-recommends在Docker映像(DL3015)中使用并遇到此错误,我需要显式安装python3-wheel。谢谢!
dimo414

很高兴知道它对您有所帮助,因为我位于虚拟环境(venv)中。
Manohar Reddy Poreddy

1
节省了我几个小时!非常感谢@ManoharReddyPoreddy
Rahul

1
最后一行应该是空手,因为已经安装了滚轮。你和它一起运行--upgrade吗?如果有人能够从Ubuntu 18.04开始创建最小的Dockerfile,那将是黄金标准。
l0b0

51

该问题是由于:

  • 已为Python 2.7安装了旧版本的pip(6.1.1)
  • Trusty Beta映像上安装的Python 2.7的多个副本
  • 用于Python 2.7的其他位置 sudo

这一切都有点复杂,这里https://github.com/travis-ci/travis-ci/issues/4989可以更好地解释。

我的解决方案是使用user travis而非sudo

- pip2.7 install --upgrade --user travis pip setuptools wheel virtualenv

8
就我而言,sudo -H pip install setuptools --upgrade解决了问题。
马丁·托马

2
@MartinThoma感谢您的提示。发行后它对我有用sudo -H pip install wheel --upgrade
Tarik

就我而言,将点数从9.0.1升级到20.0.2足够了
Seyf

45

如果已经安装了所有必需的模块,则可能需要将setuptools模块导入setup.py文件中。因此,只需在setup.py文件开头添加以下行。

import setuptools
from distutils.core import setup
# other imports and setups

Wheel的文档中也提到了这一点。https://wheel.readthedocs.io/en/stable/#usage


6
这对我有用。我使用distutils而不是setuptools进行安装,并且已经安装了wheel软件包。
Alex Kaszynski '18

26

与许多建议的答案和不同的解决方案一样,此错误也很奇怪。我尝试过,添加它们。只有当我添加pip install --upgrade pip最终为我消除错误时。但是我没有时间隔离哪个是哪个,所以这只是一个问题。


23

就我而言,venv创建的wheel / pip / setuptools版本太旧了。这有效:

venv/bin/pip  install --upgrade pip wheel setuptools

11

我已经wheel安装了,所以我尝试卸载并重新安装,它解决了此问题:

pip uninstall wheel
pip install wheel

奇怪的...


FWIW我刚刚遇到此错误,所以卸载和重新安装对我
Vincent

8

我的解决方法是 apt install python3-dev


2
是的,并添加setup_requires=["wheel"]到您的setup.py
Pim Heijden

6

在中setup.py,如果您有:

from distutils.core import setup

然后,将其更改为

from setuptools import setup

然后重新创建您的virtualenv并重新运行该命令,它应该可以工作。


1
这解决了我的问题。谢谢。+1
海乌

5

尝试通过从setuptools而不是distutils.core导入安装程序来修改setup.py文件


为我工作!我正在将软件包从Python2迁移到Python3,不幸的是找不到相关的指南。任何做同样的事情并且对此问题感到沮丧的人,这可能会帮您做到!
skytreader19年

4

apt-get install python3-dev在Ubuntu中做过,并添加setup_requires=["wheel"]setup.py


10
可能足以运行pip install wheel
kap


1

使用Ubuntu 18.04,可以通过安装python3-wheel软件包来解决此问题。

通常,它是作为对任何Python包的依赖项安装的。但是尤其是在构建容器映像时,您经常使用--no-install-recommends它,因此常常会丢失它,因此必须首先手动安装。


0

与Travis CI无关,但是尝试jupyter在Mac OSX 10.8.5上安装时遇到了类似的问题,其他答案都没有帮助。该问题是由于为名为“pyzmq,错误消息填充了数百页。

我发现的解决方案是直接安装该软件包的旧版本:

python -m pip install pyzmq==17 --user

之后,安装jupyter成功,没有错误。


0

如果您使用的是setup.cfg文件,请将其添加到install_require零件之前:

setup_requires =
    wheel

setup.cfg项目示例:

# setup.py
from setuptools import setup

setup()
# setup.cfg
[metadata]
name = name
version = 0.0.1
description = desc
long_description = file: README.md
long_description_content_type = text/markdown
url = url
author = author
classifiers =
    Programming Language :: Python
    Programming Language :: Python :: 3

[options]
include_package_data = true
packages = find:
setup_requires =
    wheel
install_requires =
    packages
    packages
    packages
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.