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

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

  • .pyc
  • .pyd
  • .pyo

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

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

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

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

注意:

在2015-09-15,Python 3.5发布实现了PEP-488,消除了.pyo文件。 这意味着.pyc文件表示未优化的字节码和优化的字节码
  • . py -常规脚本
  • .py3 -(很少使用)Python3脚本。Python3脚本通常以".py"结尾;不是“。py3”,但我见过几次
  • .pyc -编译脚本(字节码)
  • .pyo -优化的pyc文件(从Python3.5开始,Python将只使用pyc而不是pyo和pyc)
  • .pyw - Python脚本在windows模式下运行,没有控制台;使用pythonw.exe执行
  • .pyx - Cython src转换为C/ c++
  • .pyd -作为Windows DLL的Python脚本
  • .pxd -用于cimports的Cython现代头文件。
  • .pxi -原始文本includes的Cython遗留头。
  • .pyi -存根文件(PEP 484)
  • .pyz - Python脚本存档(PEP 441);这是一个在标准Python脚本头文件之后以二进制形式包含压缩Python脚本(ZIP)的脚本
  • .pyzw - MS-Windows的Python脚本存档(PEP 441);这是一个在标准Python脚本头文件之后以二进制形式包含压缩Python脚本(ZIP)的脚本
  • . py (cod) -“。gitignore"”中的通配符符号;这意味着文件可能是&;.pyc", &;.pyo"或&;.pyd"。
  • .pth -路径配置文件;它的内容是添加到sys.path的附加项(每行一个)。参见site模块。
  • .egg -用于分发/导入的特殊zip,自PEP 427以来大部分已过时
  • .whl -仅用于分发的特殊zip,被pip广泛使用

可以在http://dcjtech.info/topic/python-file-extensions/找到更多的其他Python文件扩展名(大多数是罕见的和非官方的)