为什么我不能在python中创建轮子?


190

这是我正在运行的命令:

$ python 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'

$ pip --version
pip 1.5.6 from /usr/local/lib/python3.4/site-packages (python 3.4)

$ python -c "import setuptools; print(setuptools.__version__)"
2.1

$ python --version
Python 3.4.1

$ which python
/usr/local/bin/python

此外,我正在使用自制的python运行Mac

这是我的setup.py脚本:https : //gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

我快要疯了-我不知道为什么这不起作用。


2
并且您已经wheel按照Thomas的建议安装了软件包?
马丁·皮特斯

1
我也有同样的问题。但似乎我没有在推荐之前使用sudo。使用后,请先征得行政许可。有效。
猎人

Answers:


301

首先安装wheel软件包

pip install wheel

文档并不太清楚,但是“ wheel项目为setuptools提供了bdist_wheel命令”实际上是指“ wheel package ...”


1
这样就可以吐出文件:nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl -是否可以在任何OS上使用,还是需要做一些其他事情才能使其正常工作?(“软件包”只是pip现在要安装的一堆依赖项)
2014年

1
@GarrettLinux,我不知道,对不起,但是我鼓励您为此提出一个单独的问题;)
Thomas Orozco 2014年

1
我也解决了这个问题-将任何文件添加到setup.py文件使它有了一个通用的轮子。例如,请查看我问题中的更新代码。
2014年

即使setup.py以某种方式使用distutils而不是setuptools(对于我而言),也可能安装OP时出现OP的错误,请参见geographika的答案。
奥利弗(Oliver)

4
对我来说,问题是点子的旧版本。由pip install --upgrade pip
Ryu_hayabusa

167

我也遇到了错误信息 invalid command 'bdist_wheel'

原来包setup.py使用的是distutils而不是setuptools。如下进行更改可以使我制造轮子。

#from distutils.core import setup
from setuptools import setup

1
是的,我也一次遇到了这个问题!非常重要,并且错误消息不佳。
2015年

@geographika是的,这也是命令,而docs.python.org/2/distutils/setupscript.html上的文档将复制您看到的问题,因为它使用了disutils
JamesD 2015年

3
至少对于我正在使用的软件包,可能也有必要更改from distutils.core import Extension, Commandfrom setuptools import Extension, Command
eseglem '16

我收到了pycrypto的错误,甚至没有导入安装程序。但是,我from setuptools import setup在一开始就添加了它,从而解决了该问题。
haridsv

38

也更新您的setuptools。

pip install setuptools --upgrade

如果仍然失败,则可以尝试使用其他--force标志。


1
我的setuptools被删除,或者出了点问题。所以我不得不做:pip install setuptools --upgrade --force
nycynik

12

在以前无法正常工作之后,我也突然遇到了这种情况,这是因为我在virtualenv中,wheel没有安装在virtualenv中。


8

更新您的pip第一个:

pip install --upgrade pip

对于Python 3:

pip3 install --upgrade pip

这是现在最有用的答案。较新版本的pip install不使用bdist_wheel,因此升级pip对我有用,而无需安装/更新setuptools或wheel
theferrit32 '18

4

也可能是您只有python3系统。因此,您已经通过pip3 install安装了必要的软件包,例如pip3 install wheel

您需要专门使用python3构建自己的东西。

python3 setup.py sdist
python3 setup.py bdist_wheel

干杯。


4

提出另一个答案:尝试检查您的PYTHONPATH

首先,尝试重新安装wheel

pip install wheel

这应该告诉您车轮安装在哪里,例如:

Requirement already satisfied: wheel in /usr/local/lib/python3.5/dist-packages

然后将wheel的位置添加到您的PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages/wheel

现在,构建轮子应该可以正常工作。

python setup.py bdist_wheel

2

我尝试了这里所说的一切,没有任何运气,但找到了解决方法。运行此命令后(失败):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

转到工具制作的临时目录(在最后一个命令的输出中给出),然后执行python setup.py bdist_wheel。该.whl文件位于dist文件夹中。

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.