小编典典

python 文件扩展名 .pyc .pyd .pyo 代表什么?

all

这些 python 文件扩展名是什么意思?

  • .pyc
  • .pyd
  • .pyo

它们之间有什么区别以及它们是如何从 *.py 文件生成的?


阅读 131

收藏
2022-03-14

共1个答案

小编典典

  1. .py: 这通常是您编写的输入源代码。
  2. .pyc: 这是编译后的字节码。如果您导入一个模块,python 将构建一个*.pyc包含字节码的文件,以便以后更容易(并且更快)再次导入它。
  3. .pyo:这是在 Python 3.5 之前用于使用优化 ( ) 标志*.pyc创建的文件的文件格式。-O(见下面的注释)
  4. .pyd: 这基本上是一个windows dll文件。http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

另外关于.pycvs的一些进一步讨论.pyo,看看: http: //www.network-
theory.co.uk/docs/pytut/CompiledPythonfiles.html(我已经复制了下面的重要部分)

  • 当使用 -O 标志调用 Python 解释器时,会生成优化代码并将其存储在“.pyo”文件中。优化器目前没有多大帮助;它只删除断言语句。使用
    -O 时,所有字节码都被优化;.pyc 文件被忽略,.py 文件被编译为优化的字节码。
  • 将两个 -O 标志传递给 Python 解释器 (-OO)
    将导致字节码编译器执行优化,在极少数情况下可能会导致程序出现故障。目前只__doc__从字节码中删除字符串,从而生成更紧凑的“.pyo”文件。由于某些程序可能依赖这些可用的程序,因此只有在您知道自己在做什么的情况下才应该使用此选项。
    * 从“.pyc”或“.pyo”文件中读取程序时,程序运行速度不会比从“.py”文件中读取时快;“.pyc”或“.pyo”文件唯一更快的是它们的加载速度。
    * 当通过在命令行上给出其名称来运行脚本时,脚本的字节码永远不会写入“.pyc”或“.pyo”文件。因此,可以通过将脚本的大部分代码移动到模块并使用导入该模块的小型引导脚本来减少脚本的启动时间。也可以直接在命令行上命名“.pyc”或“.pyo”文件。

笔记:

在 2015 年 9 月 15 日,Python 3.5
版本
实现了 PEP-488 并消除了.pyo文件。这意味着.pyc文件代表未优化和优化的字节码。

2022-03-14