Python 为什么是';pyo';imp.get_后缀()列表中缺少?

Python 为什么是';pyo';imp.get_后缀()列表中缺少?,python,Python,函数返回描述特定模块类型的元组列表 我知道pyo是一个*.pyc文件,它是在启用优化(-O)时创建的。所以pyo应该被认为是一个独立的模块,不同于可能被PY\u编译优化的模块 那么,为什么不承认pyo是一个独立的模块类型呢?我意识到这个问题很久以前就被问过了,但现在它确实是一个没有意义的问题 从Python 3.5开始,PEP 488删除了pyo扩展,并开始对优化和未优化的字节码文件使用pyc。如果回到3.4,您将看到pyo包含在该点上: SOURCE_SUFFIXES = ['.py'] DE

函数返回描述特定模块类型的元组列表

我知道
pyo
是一个*.pyc文件,它是在启用优化(-O)时创建的。所以
pyo
应该被认为是一个独立的模块,不同于可能被PY\u编译优化的模块


那么,为什么不承认pyo是一个独立的模块类型呢?

我意识到这个问题很久以前就被问过了,但现在它确实是一个没有意义的问题

从Python 3.5开始,PEP 488删除了
pyo
扩展,并开始对优化和未优化的字节码文件使用
pyc
。如果回到3.4,您将看到
pyo
包含在该点上:

SOURCE_SUFFIXES = ['.py']
DEBUG_BYTECODE_SUFFIXES = ['.pyc']
OPTIMIZED_BYTECODE_SUFFIXES = ['.pyo']
在第3.5条中,该条改为:

SOURCE_SUFFIXES = ['.py']
BYTECODE_SUFFIXES = ['.pyc']
DEBUG_BYTECODE_SUFFIXES = OPTIMIZED_BYTECODE_SUFFIXES = BYTECODE_SUFFIXES
PEP 488中的这些更改,以及3.2中的PEP 3147更改,提供了一种处理已编译Python的更强大的方法,其中包括:

  • 编译字节码的通用扩展,在任何优化级别
  • 一个缓存子目录,用于防止
    pyc
    文件弄乱源区域
  • 解释器版本烘焙到
    pyc
    文件名中,这样您就可以拥有来自不同Python版本的文件
  • 优化级别也烘焙到
    pyc
    文件名中,因此没有冲突
  • 更改模块加载器以完成所有这些工作,确保生成或加载正确的
    pyc
    文件