为什么 python setup.py 在 Travis CI 上说无效命令 'bdist_wheel'?
Why is python setup.py saying invalid command 'bdist_wheel' on Travis CI?
我的 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。
此问题是由于:
- 正在为 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
必须安装 wheel
包。一切都是最新的,但仍然出现错误。
pip install wheel
然后
python setup.py bdist_wheel
工作没有问题。
这个错误很奇怪,因为许多建议的答案和得到的解决方案都是混合的。我试过了,添加它们。只有当我添加 pip install --upgrade pip
终于为我消除了错误。但是我没有时间去区分哪个是哪个,所以仅供参考。
如果您已经安装了所有必需的模块,您可能需要在 setup.py
文件中导入 setuptools
模块。所以只需在 setup.py
文件的开头添加以下行。
import setuptools
from distutils.core import setup
# other imports and setups
wheel 的文档中也提到了这一点。 https://wheel.readthedocs.io/en/stable/#usage
我已经安装了 wheel
,所以我尝试卸载并重新安装,它解决了问题:
pip uninstall wheel
pip install wheel
奇怪...
我的修复是 apt install python3-dev
pip install wheel
对我有用,但你也可以添加这个
setup(
...
setup_requires=['wheel']
)
到 setup.py 并为自己保存一个 pip 安装命令
尝试通过从 setuptools 而不是 distutils.core
导入设置来修改 setup.py 文件
与特拉维斯无关 CI 但
我 运行 遇到了类似的问题,试图在我的 Mac OSX 10.8.5 上安装 jupyter
,其他答案的 none 很有帮助。问题是由为名为 pyzmq
的包构建 "wheel" 引起的,错误消息占了数百页。
我找到的解决方案是直接安装该软件包的旧版本:
python -m pip install pyzmq==17 --user
之后,jupyter
安装成功,没有错误。
它帮助我按照此处的说明进行操作:
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
使用 Ubuntu 18.04 可以通过安装 python3-wheel
软件包解决此问题。
通常这是作为任何 Python 包的依赖项安装的。但尤其是在构建容器镜像时,您经常使用 --no-install-recommends
,因此它经常丢失,必须先手动安装。
就我而言,venv 创建的 wheel/pip/setuptools 版本太旧了。
这有效:
venv/bin/pip install --upgrade pip wheel setuptools
在 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 行作为先决条件。
在您的 setup.py
中,如果您有:
from distutils.core import setup
然后,将其更改为
from setuptools import setup
然后重新创建您的 virtualenv 并重新运行 命令,它应该可以工作。
我在 Ubuntu 中做了 apt-get install python3-dev
并在 setup.py
中添加了 setup_requires=["wheel"]
如果您使用的是 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
如果上述 none 对您有效,那么您可能遇到了与我相同的问题。我只是在尝试安装 pyspark
时才看到此错误。该解决方案在另一个 Whosebug 问题 unable to install pyspark.
中进行了解释
我 post 这个 b/c 我并没有立即从错误消息中看出我的问题完全源于 pyspark
对 pypandoc
的依赖我希望能将其他人从数小时的挠头中解救出来! =)
也许,您的 pip 版本已过时。在新创建的虚拟环境中安装模块时,我在 WSL 中遇到了同样的问题。我能够通过 运行 以下命令解决它:
$ ./bin/python3 -m pip install --upgrade pip
方法一:更新pip
python3 -m pip install --upgrade pip
方法二:必须安装wheel包
pip install wheel
python setup.py bdist_wheel
我尝试了上面给出的pip install wheel
指令,但它没有用,因为我被告知要求已经满足。事实证明,我使用的是 python-3.10 和 python-3.9 站点包中的 pip。我终于意识到,通过输入 python --version
和 pip --version
并比较目录。
有了这个认识,我安装了一个新版本的 pip 来配合我的 python-3.10,安装了 wheel,一切正常。
我的 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。
此问题是由于:
- 正在为 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
必须安装 wheel
包。一切都是最新的,但仍然出现错误。
pip install wheel
然后
python setup.py bdist_wheel
工作没有问题。
这个错误很奇怪,因为许多建议的答案和得到的解决方案都是混合的。我试过了,添加它们。只有当我添加 pip install --upgrade pip
终于为我消除了错误。但是我没有时间去区分哪个是哪个,所以仅供参考。
如果您已经安装了所有必需的模块,您可能需要在 setup.py
文件中导入 setuptools
模块。所以只需在 setup.py
文件的开头添加以下行。
import setuptools
from distutils.core import setup
# other imports and setups
wheel 的文档中也提到了这一点。 https://wheel.readthedocs.io/en/stable/#usage
我已经安装了 wheel
,所以我尝试卸载并重新安装,它解决了问题:
pip uninstall wheel
pip install wheel
奇怪...
我的修复是 apt install python3-dev
pip install wheel
对我有用,但你也可以添加这个
setup(
...
setup_requires=['wheel']
)
到 setup.py 并为自己保存一个 pip 安装命令
尝试通过从 setuptools 而不是 distutils.core
导入设置来修改 setup.py 文件与特拉维斯无关 CI 但
我 运行 遇到了类似的问题,试图在我的 Mac OSX 10.8.5 上安装 jupyter
,其他答案的 none 很有帮助。问题是由为名为 pyzmq
的包构建 "wheel" 引起的,错误消息占了数百页。
我找到的解决方案是直接安装该软件包的旧版本:
python -m pip install pyzmq==17 --user
之后,jupyter
安装成功,没有错误。
它帮助我按照此处的说明进行操作:
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
使用 Ubuntu 18.04 可以通过安装 python3-wheel
软件包解决此问题。
通常这是作为任何 Python 包的依赖项安装的。但尤其是在构建容器镜像时,您经常使用 --no-install-recommends
,因此它经常丢失,必须先手动安装。
就我而言,venv 创建的 wheel/pip/setuptools 版本太旧了。 这有效:
venv/bin/pip install --upgrade pip wheel setuptools
在 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 行作为先决条件。
在您的 setup.py
中,如果您有:
from distutils.core import setup
然后,将其更改为
from setuptools import setup
然后重新创建您的 virtualenv 并重新运行 命令,它应该可以工作。
我在 Ubuntu 中做了 apt-get install python3-dev
并在 setup.py
setup_requires=["wheel"]
如果您使用的是 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
如果上述 none 对您有效,那么您可能遇到了与我相同的问题。我只是在尝试安装 pyspark
时才看到此错误。该解决方案在另一个 Whosebug 问题 unable to install pyspark.
我 post 这个 b/c 我并没有立即从错误消息中看出我的问题完全源于 pyspark
对 pypandoc
的依赖我希望能将其他人从数小时的挠头中解救出来! =)
也许,您的 pip 版本已过时。在新创建的虚拟环境中安装模块时,我在 WSL 中遇到了同样的问题。我能够通过 运行 以下命令解决它:
$ ./bin/python3 -m pip install --upgrade pip
方法一:更新pip
python3 -m pip install --upgrade pip
方法二:必须安装wheel包
pip install wheel
python setup.py bdist_wheel
我尝试了上面给出的pip install wheel
指令,但它没有用,因为我被告知要求已经满足。事实证明,我使用的是 python-3.10 和 python-3.9 站点包中的 pip。我终于意识到,通过输入 python --version
和 pip --version
并比较目录。
有了这个认识,我安装了一个新版本的 pip 来配合我的 python-3.10,安装了 wheel,一切正常。