特定的Python版本字节码可以在不同的解释器上运行吗?

特定的Python版本字节码可以在不同的解释器上运行吗?,python,Python,我一直在阅读有关Python解释器的书籍,特别是CPython和PyPy,我知道运行Python代码有两个步骤: 转换为字节码 对机器代码的解释 我的问题是,如果字节码是由CPython生成的,比如说Python版本2.7.0,那么字节码是否会在PyPy for Python 2.7.0上运行?否。字节码在不同版本之间会发生变化,并用一个神奇的数字标记,以明确它将使用哪些解释器。就在CPython内部,在CPython和PyPy之间,他们甚至不需要就在哪里寻找魔法数字达成一致,更不用说它的含义了

我一直在阅读有关Python解释器的书籍,特别是CPython和PyPy,我知道运行Python代码有两个步骤:

  • 转换为字节码
  • 对机器代码的解释

  • 我的问题是,如果字节码是由CPython生成的,比如说Python版本2.7.0,那么字节码是否会在PyPy for Python 2.7.0上运行?

    否。字节码在不同版本之间会发生变化,并用一个神奇的数字标记,以明确它将使用哪些解释器。就在CPython内部,在CPython和PyPy之间,他们甚至不需要就在哪里寻找魔法数字达成一致,更不用说它的含义了
    .pyc
    文件在很大程度上是一种优化,不像源文件那样可移植;只有当它们与理解它们的解释器一起分发时,它们才是可分发的


    基本上,Python语言标准涵盖源语法和库,而不是字节码格式

    我不这么认为。字节码是实现的一部分,所以我不希望它们在实现中是可移植的。