【问题标题】:When integrating Python how much of the version has to match?在集成 Python 时,必须匹配多少版本?
【发布时间】:2013-05-13 15:26:11
【问题描述】:

这个问题是关于将 Python 集成到另一个程序中。如果我链接到 Python,对于早期的 2.x 版本,我有一个名为 python27.lib 或类似名称(例如 python26.lib)的导入库。显然 Python 3.x 稍微改变了那里的规则,因为我在 libs 文件夹中找到了 python3.libpython33.lib

查看导入库的成员似乎很清楚,例如 2.6 和 2.7 之间不存在兼容性。 但是,我可以假设 Python 2.7.3 中的导入库可以与较旧的 Python 2.7 DLL 一起使用,例如2.7.2 还是 2.7.1? 我不会将 Python 与我的应用程序一起部署,而是希望提供 Python 集成作为基于已设置 Python 的选项。

额外问题:鉴于 Python 3 中的名称更改以及 python3.dll 似乎包含函数导出转发器的事实,我可以假设链接到 python3.lib 将适用于任何 Python 3。 x 版本从 3.0 开始?

【问题讨论】:

    标签: windows python-2.7 python-3.x integration


    【解决方案1】:

    Python 的补丁级别是二进制兼容的,也就是说,当您与 2.7.3 链接时,该二进制文件也可以与其他 2.7.x 版本一起使用。这在不同版本之间不起作用(也就是说,您的二进制文件不适用于 Python 2.6 或 3.3)。

    当您与 python3.dll 链接时,您可以使用每个 python 3.x 版本,但您可以使用的 C API 受到限制:您只能使用稳定的 ABI(如 here 所述)。

    【讨论】:

    • 谢谢!你也有第一段的来源吗?
    • 不是马上。这是 CPython 开发过程的副作用:微版本不应该引入新功能,更改 ABI 是错误修复版本中的一大禁忌。错误修复版本的目标是使更新 python 安装成为可能,并确保一切正常运行(除非版本中出现意外错误,以及碰巧依赖已修复错误存在的代码)
    • 您可以在此处检查 Python 版本之间的二进制兼容性 - upstream.rosalinux.ru/versions/python.html
    猜你喜欢
    • 1970-01-01
    • 2011-12-19
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多