setup.py
文件中加入什么内容,以防止pip在使用不支持的Python版本时收集并尝试安装包?例如
magicstack
是一个列出了trove分类器的项目。Programming Language :: Python :: 3 :: Only
所以如果 pip --version
与 Python 2.7 相关联,我希望它表现出以下行为:
$ pip install magicstack
Collecting magicstack
Could not find a version that satisfies the requirement magicstack (from versions: )
No matching distribution found for magicstack
但实际表现是pip会收集一个发布版本,下载它,尝试安装它,然后失败。还有其他Python3-only版本,例如curio
,它实际上可以成功安装 - 因为setup.py
没有使用任何特定于Python 3的内容 - 只有在使用某些仅适用于Python 3语法的导入时才会失败。我相信还有一些包可以安装,可以导入,也许只有在运行时失败!
什么是指定受支持的Python版本的正确方法,以使pip能够遵守?我找到了一个解决方法,涉及只上传wheel文件,并拒绝上传.tar.gz分发,但我很想知道正确的修复方法。
编辑:如果Python /操作系统/架构不匹配,pip如何知道不下载轮分发? 它只是使用.whl文件名规则还是背后发生了更复杂的事情? 我们是否可以为源分发提供元数据,以使pip对.tar.gz上传执行正确操作?
setup.py
中检查Python版本。 - user2357112