在尝试安装之前,是否可以通过编程方式检查控制盘(whl)是否与所选Python安装兼容
我正在制作一个自动化的软件包安装程序(Python项目工作所需的软件包),我只需要尝试安装兼容的PKG,因此如果有错误,我知道它们只来自兼容的模块,我应该看到发生了什么(而不是来自不兼容的PKG的错误,我不在乎)。示例:我有Python3.5和3.7的控制盘,在3.5安装中,无法尝试安装3.7控制盘
我尝试过pkginfo
(https://pypi.org/project/pkginfo/),但在wheel.supported_platforms
上,它返回一个空数组,我对此无能为力(平台部分中名称上带有“any”或“win32”的轮子返回了一个空数组,所以我似乎无法使用它)
还尝试了来自python -m pip debug --verbose
的输出,但出现以下情况:
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without no
tice.
这使得命令无法使用,即使它打印了“兼容标签”,我或多或少可以用它来确定一个轮子是否受其名称的支持。Python数组中的“兼容标记”示例:
['cp39-cp39-win_amd64', 'cp39-abi3-win_amd64', 'cp39-none-win_amd64', 'cp38-abi3-win_amd64', 'cp37-abi3-win_amd64', 'cp36-abi3-win_amd64', 'cp35-abi3-win_amd64', 'cp34-abi3-win_amd64', 'cp
33-abi3-win_amd64', 'cp32-abi3-win_amd64', 'py39-none-win_amd64', 'py3-none-win_amd64', 'py38-none-win_amd64', 'py37-none-win_amd64', 'py36-none-win_amd64', 'py35-none-win_amd64', 'py34-no
ne-win_amd64', 'py33-none-win_amd64', 'py32-none-win_amd64', 'py31-none-win_amd64', 'py30-none-win_amd64', 'cp39-none-any', 'py39-none-any', 'py3-none-any', 'py38-none-any', 'py37-none-any
', 'py36-none-any', 'py35-none-any', 'py34-none-any', 'py33-none-any', 'py32-none-any', 'py31-none-any', 'py30-none-any']
例如,使用“pyHook-1.5.1-cp36-cp36m-win32.whl”,我可以检查名称,看看它是否兼容(除了上面的警告…)
还有其他想法吗
提前感谢您的帮助
编辑:我可以手动从名称中提取一些内容,并对文档中看到的一些可能性进行硬编码,如“win32”和“win_amd64”(就像我以前做的那样),但接下来我需要确切地知道名称部分可能具有的所有可能性(我在文档中看到了一个很酷的表达:“e.g.”-这意味着有不止提到的事情)并且在这方面有很多工作。我希望已经有人制作了这样的东西(甚至Python本身在任何内部包中都有一些方法)
可以使用packaging执行此操作
获取标签的示例代码与从pip获得的标签类似:
当然,您可以使用上面的变量
tags
以编程方式做更多的事情:有关更深入的文档,请选中:https://packaging.pypa.io/en/latest/tags.html#packaging.tags.sys_tags
相关问题 更多 >
编程相关推荐