Python 2.7.X到2.7.Y的兼容性

Python 2.7.X到2.7.Y的兼容性,python,python-2.7,compatibility,bytecode,cpython,Python,Python 2.7,Compatibility,Bytecode,Cpython,我想在Python的最新版本2.7(比如2.7.18)上开发和测试我的项目,但我希望我的项目在2.7的早期版本上仍然完全可用(比如2.7.7)。在本地或/和CI上设置2.7的许多变体以进行测试可能是多余的 因此,关于2.7.X的兼容性有以下问题 语法是否会有任何变化,导致代码无法工作 可用的标准导入是否会有任何更改,例如,从\uuuuu future\uuuuu导入的某些内容是否在早期版本中不可用 由于我必须分发已编译的Python文件(.pyc,通过py_compile模块编译),我还想知道P

我想在Python的最新版本
2.7
(比如
2.7.18
)上开发和测试我的项目,但我希望我的项目在
2.7
的早期版本上仍然完全可用(比如
2.7.7
)。在本地或/和CI上设置
2.7
的许多变体以进行测试可能是多余的

因此,关于
2.7.X
的兼容性有以下问题

  • 语法是否会有任何变化,导致代码无法工作
  • 可用的标准导入是否会有任何更改,例如,从
    \uuuuu future\uuuuu
    导入的某些内容是否在早期版本中不可用
  • 由于我必须分发已编译的Python文件(
    .pyc
    ,通过
    py_compile
    模块编译),我还想知道Python字节码中是否会有任何更改,这些更改会阻止早期版本中的代码执行
  • 我想如果所有答案都是“否”,我就可以在一个
    2.7
    版本上开发和测试我的项目,而不用担心

    我试着搜索它,但没有成功。请分享您的经验和/或链接


    UPD 1:我应该从一开始就清楚地说,我不希望使用
    2.7
    ,这是环境的要求。

    至少Python2.7.9对“ssl”模块进行了大量更改,因此在早于2.7.9的Python上使用ssl 2.7.18的代码将失败。因此,对第二个问题明确表示“是”

    一般来说,大多数项目的兼容性是相反的,使用您需要支持的最旧版本,从旧到新向上工作,而不是从新到旧向下工作。我不知道有哪个软件项目在另一个方向做出保证

    请注意,Python2.7已不再受2.7.18的支持,因此,除非您使用类似PyPy()的兼容版本,否则新开发的项目从一开始就将在过时的Python版本上运行

    如果你想提供一个收缩包装的产品,也许可以看看常用的解决方案,比如pyinstaller()或freeze()


    如果您研究字节码操作码列表,这些字节码操作码不会随时间发生太大变化(),但不知道磁盘格式是否发生了变化,

    作为初学者,Python 2.7没有最新版本。这是生命的终结。对于新项目,请使用最新版本(如3.8)。另外,Python2.7是AFAIR中唯一一个进行了突破性更改的dot版本。
    ssl
    模块在2.7.9中更改。此外,一些发行版采用了更改,但没有发布号,这进一步增加了混乱。由于缺乏努力/研究,仅Python 2.7的明显更改日志就列出了一系列可能会打破您假设的更改:@schlenk我不确定您的链接在哪里清楚地说明了不兼容。没有关于破坏更改的信息。。。我在其他地方搜索过此类信息,但也没有找到。@SerVB:changelog引用至少调用了新模块(EnsureIP)和现有模块中的许多新函数/更改,这符合您的第二点。SSL的好例子,谢谢。我不能缩小我的发行版,它必须是一组
    .pyc
    文件。用户已经有了解释器,他们想使用他们的,而不是我的。@SerVB使用他们的版本开发。