当使用不受支持的 Python 版本时,我们可以在setup.py
文件中放入什么来防止 pip 收集和尝试安装包?
例如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 的版本,curio
它们实际上安装得很好——因为setup.py
没有使用任何特定于 Python 3 的东西——只是在使用某些仅限 Python 3 的语法时在导入时失败。而且我确定有些软件包可以安装,导入正常,并且可能只会在运行时失败!
以 pip 尊重的方式指定支持的 Python 版本的正确方法是什么? 我找到了一种解决方法,只涉及上传一个轮子文件,并拒绝上传一个 .tar.gz 发行版,但我很想知道正确的修复方法。
编辑:如果 Python/os/architecture 不匹配 ,pip 如何知道不下载轮子分发?它只是使用.whl 文件名约定还是比幕后发生的更复杂?我们能否以某种方式将元数据提供给源分发,以使 pip 对 .tar.gz 上传做正确的事情?