【发布时间】:2020-08-08 10:24:54
【问题描述】:
我想在最新版本的 Python 2.7(比如 2.7.18)上开发和测试我的项目,但我希望我的项目在早期版本的 2.7 上仍然完全可用(比如2.7.7)。在本地或/和 CI 上设置 2.7 的许多变体进行测试可能是多余的。
所以有以下关于2.7.X的兼容性问题。
- 语法中是否有任何更改导致代码无法工作?
-
可用的标准导入是否有任何变化,例如,来自
__future__的某些导入是否在早期版本中不可用? - 由于我必须分发已编译的 Python 文件(
.pyc,通过py_compile模块编译),我还想知道 Python 字节码 中是否有任何更改会阻止代码执行早期版本。
我想如果所有答案都是“否”,我可以只在一个 2.7 版本上开发和测试我的项目,而无需担心。
我试图搜索它,但没有成功。请分享您的经验和/或链接。
UPD 1:我应该从一开始就明确表示,使用2.7不是我的愿望,这是环境的要求。
【问题讨论】:
-
作为初学者,没有最新版本的 Python 2.7。这是生命的尽头。对于新项目,请使用最新版本(如 3.8)。 Python 2.7 也是 AFAIR 唯一一个有重大变化的 dot-release。
ssl模块在 2.7.9 中已更改。此外,一些发行版采用了更改而不是发布号,以增加混乱。 -
缺乏努力/研究,仅 Python 2.7 的明显更改日志就列出了一系列可能会打破您的假设的更改:docs.python.org/2.7/whatsnew/…
-
@schlenk 我不确定您的链接在哪里清楚地说明了不兼容性。没有关于那里的重大更改的信息...我在其他地方搜索过此类信息,也没有找到。
-
@SerVB:引用的更改日志至少调用了新模块(ensurepip)和现有模块中的许多新功能/更改,这符合您的第二点。
标签: python python-2.7 compatibility bytecode cpython