这些python文件扩展名是什么意思?
- .pyc
- .pyd
- .pyo
它们之间有什么区别,它们是如何从* .py文件生成的?
这些python文件扩展名是什么意思?
它们之间有什么区别,它们是如何从* .py文件生成的?
Answers:
.py
:这通常是您编写的输入源代码。.pyc
:这是编译后的字节码。如果您导入模块,则python将构建一个*.pyc
包含字节码的文件,以使以后再次(更快)地再次导入它。.pyo
:这是在Python 3.5之前用于*.pyc
通过优化(-O
)标志创建的文件的文件格式。(请参阅下面的注释).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
文件代表未优化和优化的字节码。
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));
sys.path
。参见site
模块。可以在http://dcjtech.info/topic/python-file-extensions/找到更多其他Python文件扩展名的列表(大多数是罕见的和非正式的)。
.pth
文件。