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第一行来摆脱这个错误。