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

时间:2016-01-15 20:19:57

标签: python travis-ci setup.py pypi

我的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'

Why can I not create a wheel in python?是相关的,但请注意我正在安装wheel并升级setuptools。

17 个答案:

答案 0 :(得分:178)

必须安装wheel包。一切都是最新的,但仍然给出错误。

pip install wheel

然后

python setup.py bdist_wheel 

没有问题。

答案 1 :(得分: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 :(得分:34)

这个问题是由于:

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

这有点复杂,在这里更好地解释https://github.com/travis-ci/travis-ci/issues/4989

我的解决方案是安装用户travis而不是sudo

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

答案 3 :(得分:19)

这个错误很奇怪,因为许多提议的答案和混合解决方案。我尝试了它们,添加它们。只有当我添加pip install --upgrade pip时才最终为我删除了错误。但我没有时间去隔离哪个,所以这只是fyi。

答案 4 :(得分:11)

在您的setup.py中,如果您有:

from distutils.core import setup

然后,将其更改为

from setuptools import setup

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

答案 5 :(得分:9)

pip install wheel

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

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

到setup.py并保存一个pip安装命令

答案 6 :(得分:8)

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

pip uninstall wheel
pip install wheel

很奇怪...

答案 7 :(得分:8)

我在Ubuntu中进行了apt-get install python3-dev的操作,并在setup_requires=["wheel"]中添加了setup.py

答案 8 :(得分:4)

如果您使用的是class ApplicationController < ActionController::API def not_found render json: { error: 'not_found' } end def authorize_request header = request.headers['Authorization'] header = header.split(' ').last if header begin @decoded = JsonWebToken.decode(header) @current_user = User.find(@decoded[:user_id]) rescue ActiveRecord::RecordNotFound => e render json: { errors: e.message }, status: :unauthorized rescue JWT::DecodeError => e render json: { errors: e.message }, status: :unauthorized end end end 文件,请将其添加到Started GET "/user/get_attendance_status" for 58.177.56.127 at 2020-05-23 19:12:49 +0800 Processing by ApplicationController#not_found as HTML Parameters: {"a"=>"user/get_attendance_status"} Completed 200 OK in 2ms (Views: 1.1ms | ActiveRecord: 0.0ms | Allocations: 93) Started GET "/attendance/in" for 58.177.56.127 at 2020-05-23 19:13:14 +0800 Processing by ApplicationController#not_found as HTML Parameters: {"a"=>"attendance/in"} Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 91) 部分之前:

setup.cfg

setup.cfg项目示例:

install_require
setup_requires =
    wheel

答案 9 :(得分:2)

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

答案 10 :(得分:1)

也许,您的 pip 版本已过时。在新创建的虚拟环境中安装模块时,我在 WSL 中遇到了同样的问题。我能够通过运行以下命令来解决它:

$ ./bin/python3 -m pip install --upgrade pip 

答案 11 :(得分:1)

在我的情况下,venv创建的wheel / pip / setuptools版本太旧了。 这有效:

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

答案 12 :(得分:1)

它帮助我按照此处的说明进行操作:

https://packaging.python.org/guides/installing-using-linux-tools/

Debian / Ubuntu

Python 2:

sudo apt install python-pip

Python 3:

sudo apt install python3-venv python3-pip

答案 13 :(得分:1)

尝试通过从setuptools而非distutils.core导入设置来修改setup.py文件

答案 14 :(得分:0)

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

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

答案 15 :(得分:0)

与Travis CI不相关,但 尝试在Mac OSX 10.8.5上安装jupiter时遇到了类似的问题,其他答案都没有帮助。该问题是由于为名为pyzmq的软件包构建了“轮子”而导致的,错误消息充满了数百页。

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

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

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

答案 16 :(得分:0)

如果以上方法都不适合您,则可能是您遇到了与我相同的问题。尝试安装pyspark时,我仅看到此错误。此解决方案在其他另一个stackoverflow问题unable to install pyspark中进行了解释。

我发布此b / c,从错误消息中,我并没有立即意识到我的问题完全是由于pysparkpypandoc的依赖而引起的,我希望能够拯救其他人从数小时的头部抓挠开始! =)