来自文档:
对可迭代对象进行排序,以便最匹配的标签位于序列中的第一个。标签的确切优先顺序是特定于解释器的,但一般来说,标签重要性的顺序为:
- 口译员
- 平台
- 阿比
我希望 py310 在 cp39 之前,但是 pynn 总是在底部:
import packaging.tags
print(list(dict.fromkeys(i.interpreter for i in packaging.tags.sys_tags())))
['cp310',
'cp39',
'cp38',
'cp37',
'cp36',
'cp35',
'cp34',
'cp33',
'cp32',
'py310',
'py3',
'py39',
'py38',
'py37',
'py36',
'py35',
'py34',
'py33',
'py32',
'py31',
'py30']
这是否意味着如果我有旧包
cp36-abi3-manylinux_2_35_x86_64
和新包py310-none-any
,鉴于当前系统是cp310,它实际上更喜欢旧包而不是新的py310-none-any?我无法理解这个问题。为什么顺序应该是这样的?
cp36-abi3-manylinux_2_35_x86_64
和新套餐 py310-none-any
这不会是“旧包”和“新包”,而更像是“特定于平台的包”和“通用包”。他们的年龄是一样的。
compat 标签与发行版本身的版本号无关。仅当已选择特定版本的包时,在确定可用文件的优先级时才会考虑这些。
根据文档
建议安装程序默认情况下尝试选择功能最完整的可用构建发行版(最特定于安装环境的发行版),然后再回退到为旧版 Python 版本发布的纯 Python 版本。
大概,对于构建的发行版来说,您能承受的越具体,您就越有机会进行特定于平台的优化等。