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


当前回答

在setup.py中,如果您有:

from distutils.core import setup

然后,将其更改为

from setuptools import setup

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

其他回答

在AWS Ubuntu 18.04新机器上,需要以下安装:

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行之前可能需要作为先决条件。

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

如果以上这些都不适用于您,那么您可能也遇到了与我相同的问题。我只是在尝试安装pyspark时看到了这个错误。解决方案在另一个无法安装pyspark的stackoverflow问题中解释。

我发布了这篇b/c,从错误消息中看不出我的问题完全源于pyspark对pypandoc的依赖,我希望能让其他人免于数小时的头痛!=)

pip install wheel

为我工作,但你也可以添加这个

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

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

如果您使用的是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