pypi UserWarning:未知分发选项:“install_requires”
在执行python setup.py install
PyPI包时,有没有人遇到这个警告?
install_requires
定义了软件包需要什么。 很多PyPI包都有这个选项。 这怎么可能是一个“未知的分配选项”?
python setup.py
使用不支持install_requires的distutils。 setuptools做,也分发(它的后继者)和点(使用)做。 但是你实际上必须使用它们。 即通过easy_install
命令或pip install
调用setuptools。
另一种方法是从您的setup.py中的setuptools导入安装程序,但这不是标准的,并且使所有想要使用您的软件包的人都必须安装setuptools。
注意 ! 注意 ! 回答不完美。 要获得关于Python宇宙中包装状态的“最新备忘录”,请阅读这篇相当详细的论文 。
我试图build立/安装ansible时遇到了这个问题。 问题似乎是distutils确实不支持 install_requires。 Setuptools 应该尽快修复distutils,但是这并不是,可能是因为2009年setuptools的最后一个版本是0.6c11,而distutils是一个核心的Python项目。
所以即使在手动安装setuptools-0.6c11-py2.7.egg之后,运行setup.py也只会selectdistutils dist.py,而不是来自site-packages / setuptools /的。
另外,setuptools文档提示使用ez_setup而不是distutils。
但是,setuptools本身是由现在提供的,setup()支持install_requires。
这是distutils的警告,并且表示您没有安装setuptools。 从http://pypi.python.org/pypi/setuptools安装它将删除警告。;
据我所知,这是一个setuptools中的错误,在调用标准库中的基类之前,它并没有删除setuptools特定的选项: https ://bitbucket.org/pypa/setuptools/issue/29 /避免-userwarnings发射-当通话
如果您在setup.py
有一个无条件import setuptools
(如果您使用setuptools特定的选项),那么脚本不会因为ImportError
而失败的事实表明setuptools已正确安装。
您可以按照以下步骤静音警告:
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
只有这样做,如果你使用无条件导入,将完全失败,如果没有安装setuptools 🙂
(我在合并后的setuptools回购中看到了同样的行为,这就是为什么我相信这是一个setuptools错误,而不是一个系统configuration问题。我期望预合并分配会有同样的问题)
sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs
它会安装任何缺less的标题。 它解决了我的问题
根据https://the-hitchhikers-guide-to-packaging.readthedocs.io setuptools
不应该被使用,因为它是Python域中最遗留的包装框架,并已被弃用一段时间。
相反,Python维护者应该使用distutils
或者distutils2
,因为他们是setuptools
的继任者,事实上甚至包含比setuptools
本身更新的setuptools
版本。
错误的原因是setuptools
应该被distutils
猴子修补成一个范围,但由于某种原因不适用。
我简单地通过添加import setuptools
作为setup.py
第一行来摆脱这个错误。