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


当前回答

这个错误很奇怪,因为许多人都提出了答案,但得到的解决方案却不尽相同。我试过了,加上它们。直到我添加了pip安装时,升级pip才为我消除了错误。但我没有时间隔离哪个是哪个,所以这只是fyi。

其他回答

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

在setup.py中,如果您有:

from distutils.core import setup

然后,将其更改为

from setuptools import setup

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

它帮助我遵循这里的指示:

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

此问题的原因是:

正在为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.

我的解决方案是使用用户travis而不是sudo进行安装:

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

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

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

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