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


Answers:


481
  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

另外,对于某些.pyc与vs 有关的讨论.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年15月15日,Python 3.5版本实现了PEP-488,并删除了.pyo文件。这意味着.pyc文件代表未优化和优化的字节码。


2
dll文件是从python脚本还是c / c ++脚本生成的?
Yanki Twizzy 2012年

1
@yankitwizzy:是的。它们应从C / C ++代码生成。该文件应位于机器代码中,因此不能直接来自python。
Bill Lynch

“优化器目前没有太大帮助;它仅删除断言语句。” 你确定吗?试试def f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
Jorge Leitao

@JCLeitão:我确定吗?您能否解释一下您的示例显示的内容,而不仅仅是在注释中添加代码。
比尔·林奇

9
请注意,在Python 3.5中,实现了PEP 488,它消除了.pyo文件的概念。然后,甚至优化的字节码都以.pyc扩展名Python 3.5 结尾。
Michael Currie 2015年

228
  • .py-常规脚本
  • .py3-(很少使用)Python3脚本。Python3脚本通常以“ .py”而不是“ .py3”结尾,但是我已经看过几次了
  • .pyc-编译脚本(字节码)
  • .pyo -优化的pyc文件(Python3.5的,Python将只使用PYC而非杓和PYC)
  • .pyw-在没有控制台的情况下以窗口模式运行的Python脚本;用pythonw.exe执行
  • .pyx -Cython src转换为C / C ++
  • .pyd -Windows DLL编写的Python脚本
  • .pxd -Cython脚本,等效于C / C ++头
  • .pxi -MyPy存根
  • .pyi-存根文件(PEP 484
  • .pyz -Python脚本存档(PEP 441); 这是一个在标准Python脚本标头之后包含二进制格式的压缩Python脚本(ZIP)的脚本
  • .pywz-适用于MS-Windows的Python脚本存档(PEP 441); 这是一个在标准Python脚本标头之后包含二进制格式的压缩Python脚本(ZIP)的脚本
  • .py [cod] -“ .gitignore”中的通配符表示文件可能是“ .pyc”,“。pyo”或“ .pyd”。
  • .pth-路径配置文件;其内容是要添加到的其他项(每行一个)sys.path。参见site模块。

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


11
应当注意,«。pyx»文件不是完全转换为C的Python源,而是Cython源代码(即:等待转换为C)
Fred Osterrath

PYI扩展中的“ I”代表什么?“包含” /“实现” /“接口”?
ChrisFreeman

1
.pyw表示创建Windows而不是Python 4 Windows的PYthon脚本。.pyw可以在* nix下执行
Kotauskas

1
通常,.pyw是在窗口模式下运行的脚本,即没有控制台输出。如@VladislavToncharov所言,它们可以在支持python的大多数平台上运行(如果已安装)
史蒂夫·巴恩斯

1
此答案应讨论.pth文件。
WIM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.