无法在 Python 3.10 上安装 cffi-1.15.1-cp36-cp36m-win_amd64 wheel

Cannot install cffi-1.15.1-cp36-cp36m-win_amd64 wheel on Python 3.10

提问人:Vinny 提问时间:3/30/2023 更新时间:3/30/2023 访问量:377

问:

我正在尝试打包一个定制的 Python wheel 包以进行离线安装,这间接依赖于 .为此,我打电话给.然后,我创建了一个 7zip 自解压安装程序,该安装程序使用 Windows 批处理脚本,通过使用 的功能来处理安装。cffipython3 -m pip download my-custom-package -d package-content--find-linkspip

我将我的包限制为 Python 3.6,并使用 Python 3.6 解释器来运行该命令。我的印象是,这将检索能够安装在高于 3.6 的任何 Python 3.x 版本(在大多数情况下)上的 wheel 包。setup.pypip download

cffi-1.15.1-cp36-cp36m-win_amd64在打包 Windows x86_64 的脱机安装程序时获取,并且能够安装在 Python 3.6 到 3.9 上。但是,当我尝试在 Python 3.10 上安装它时,我得到以下输出:
ERROR: cffi-1.15.1-cp36-cp36m-win_amd64.whl is not a supported wheel on this platform.

如果我将文件名更改为 cp310 cp310m,那么它会突然正确安装(并且可用)。这让我相信文件内部没有任何内容表明它与 Python 3.10 不兼容,而是解析文件名,并对其进行 barfing。cffi-1.15.1---win_amd64.whlpipABI

这是一个已知的错误吗?我在包装方面的版本是 ,在安装方面是 。我目前的计划是多次运行下载命令,指定 3.6 和 3.10 之间的每个 Python 次要版本。然而,这很麻烦,如果有一个记录在案的错误将其解释为专门隔离的,那么我可能会研究替代的、更优雅的解决方案。这也许是 ?pippip21.3.123.0.1pipcffi-1.15.1-cp36-cp36m-win_amd64cp3xABI

python-3.x pip python-3.6 python-cffi

评论

1赞 AKX 3/30/2023
不,这不是一个错误,但如果你将轮子的标签重命名为其他东西,你就是在玩火,并且已经拿走了所有的保险装置。
0赞 Vinny 3/30/2023
我并不是说重命名轮子是解决我问题的可行方法。相反,该信息表明 wheel 文件内部没有某个版本范围,这表明它与 Python 3.10 不兼容。如果除了文件名之外,还要从源确定兼容性,我希望即使在重命名,轮文件仍无法安装。pip
0赞 phd 3/30/2023
"这让我相信该文件内部没有任何内容表明它与 Python 3.10 不兼容,而是 pip 正在从文件名中解析 ABI,并对其进行 barfing。是的,没错。“这是 pip 的已知错误吗?”根本不是错误。如果您可以重命名文件,那么什么会阻止您编辑轮子的内容(它只是一个 zip 存档,因此您可以解压缩、编辑并重新打包)?这就像使用十六进制编辑器编辑可执行文件一样——你可以这样做,但之后的所有段错误都是你的惩罚。底线是——不要这样做!!*
1赞 AKX 3/30/2023
好吧,你是对的,因为这并没有进一步确定它的内容,它只是在它所属的地方解压缩它。(好吧,它也可能查看其中的元数据,但 AFAIK 轮子内没有二进制兼容性元数据)。pip.whlRequires-Python
1赞 Armin Rigo 3/30/2023
CFFI 源代码包含条件编译指令,具体取决于 CPython 版本,这意味着它可能在简单情况下有效,但在其他情况下中断。

答: 暂无答案