Tyl*_*ong 97 python distutils pypi
执行python setup.py installPyPI包时是否有人遇到此警告?
install_requires定义包所需的内容.很多PyPI包都有这个选项.它怎么可能是一个"未知的分发选项"?
Seb*_*ask 83
python setup.py使用不支持install_requires的distutils.setuptools做,也分发(它的继承者),和pip(使用其中任何一个)做.但你实际上必须使用它们.即通过easy_install命令或调用setuptools pip install.
另一种方法是从setup.py中的setuptools导入安装程序,但这不是标准的,并且每个想要使用你的软件包的人都必须安装setuptools.
小智 24
这是我谷歌搜索的第一个结果,但没有答案.我发现升级setuptools解决了我的问题(和pip for good measure)
pip install --upgrade pip
pip install --upgrade setuptools
Run Code Online (Sandbox Code Playgroud)
希望这有助于下一个人找到这个链接!
PAS*_*LoD 16
注意!注意!前面的答案不完整.要获得有关Python世界中包装状态的"最新备忘录",请阅读这篇相当详细的文章.
我在尝试构建/安装ansible时遇到了这个问题.问题似乎是distutils确实不支持 install_requires.Setuptools 应该动态地修补distutils,但事实并非如此,可能是因为setuptools的最后一个版本是2009年的0.6c11,而distutils是一个核心的Python项目.
因此,即使在手动安装setuptools-0.6c11-py2.7.egg之后,运行setup.py也只能选择distutils dist.py,而不是来自site-packages/setuptools /的那个.
setuptools文档还提示使用ez_setup而不是distutils.
但是,setuptools本身是由分发提供的,而setup()的味道支持install_requires.
Ala*_*nSE 11
我在Mac上使用python 2.7.11.我一直在努力创建非常简单和直接的项目,我唯一的要求是我可以运行python setup.py install,并且setup.py使用setup命令,理想情况下来自distutils.除了setup()我在这里注意到的之外,除了kwargs之外几乎没有其他的进口或代码.
我的setup.py文件导入时出现错误:
from distutils.core import setup
Run Code Online (Sandbox Code Playgroud)
当我使用它时,我会收到诸如此类的警告
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267:UserWarning:Unknown distribution options:'entry_points'warnings.warn( MSG)
如果我将导入(以及其他任何内容)更改为以下内容:
from distutils.core import setup
import setuptools # noqa
Run Code Online (Sandbox Code Playgroud)
警告消失了.
请注意,我没有使用setuptools,只是导入它会更改行为,使其不再发出警告.对我来说,这是一个真正莫名其妙的差异的原因,我正在使用的一些项目给出了这些警告,而另一些则没有.
很明显,正在进行某种形式的猴子修补,并且它是否受到导入的影响.这可能不是每个人研究这个问题的情况,但对于我正在工作的狭窄环境,这是我正在寻找的答案.
这与其他(社区)评论一致,该评论说distutils应该monkeypatch setuptools,并且他们在安装Ansible时遇到了问题.Ansible似乎试图在过去没有安装工具的情况下允许安装,然后重新开始.
https://github.com/ansible/ansible/blob/devel/setup.py
很多东西都在空中......但如果你正在为一个简单的项目寻找一个简单的答案,你应该只需要导入setuptools.
这是来自distutils的警告,表示您没有安装setuptools.从http://pypi.python.org/pypi/setuptools安装它将删除警告.
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Run Code Online (Sandbox Code Playgroud)
它将安装任何缺少的标头。它解决了我的问题
总之:
distutils不支持install_requires或entry_points,支持setuptools。
变化from distutils.core import setup在setup.py到from setuptools import setup或重构你的setup.py只使用distutils功能。
我来到这里是因为我没有意识到entry_points这只是一个setuptools功能。
如果你在这里想转换setuptools到distutils像我这样的:
install_requires从setup.py 中删除,只需将requirements.txt与pipentry_points为scripts( doc ) 并重构依赖于entry_points具有 shebangs 和入口点的完整脚本的任何模块。| 归档时间: |
|
| 查看次数: |
95310 次 |
| 最近记录: |