在尝试安装之前,是否可以通过程序检查一个wheel(whl)与所选Python安装的兼容性?
我正在制作一个自动化的包安装程序(为了让我的Python项目工作所需的包),我只需要尝试安装兼容的包,这样如果有错误,我就知道它们仅来自于兼容的模块,我需要看看发生了什么(而不是来自于不兼容的包的错误,这些我不关心)。例如:我会有Python 3.5和3.7的wheels,在3.5安装中,不能尝试安装3.7 wheels。
我已经尝试过pkginfo
(https://pypi.org/project/pkginfo/),但在wheel.supported_platforms
上,它返回一个空数组,我无法对其进行任何操作(带有平台部分的"any"或"win32"名称的wheel返回一个空数组,所以我无法使用它,似乎是如此)。
还尝试了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”(就像我以前做的那样),但是我需要确切了解名称部分可能具有的所有可能性(我在文档中看到一个很酷的表达式:“例如”-这意味着还有更多没有提到的事物),并且需要大量的工作才能完成。我希望已经有人完成了这样的工作(甚至Python本身也可能在其内部包中有某种方式)。