.py
:这通常是您编写的输入源代码..pyc
:这是编译后的字节码.如果导入一个模块,python将构建一个包含字节码的*.pyc
文件,以便以后更容易(更快)再次导入..pyo
:这是Python3.5之前使用优化(-O
)标志创建的*.pyc
个文件的文件格式.(请参阅下面的注释).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解释器时,会生成优化的代码,并将其存储在'.pyo的文件.优化器目前帮助不大;它只删除断言语句.当使用-O时,所有字节码都会得到优化.pyc文件将被忽略并删除.py文件被编译成优化的字节码.
- 将2-O标志传递给Python解释器(-OO)将导致字节码编译器执行优化,这些优化在极少数情况下可能会导致程序出现故障.目前只从字节码中删除了
__doc__
个字符串,从而生成了更紧凑的".pyo"文件.由于某些程序可能依赖于这些可用选项,因此只有在您知道自己在做什么的情况下才应该使用此选项.- 一个程序从一个数据库读取时,运行速度不会更快.pyc"或".pyo'文件,而不是从文件中读取.py’文件;唯一能让你更快的是.pyc"或".pyo'文件是加载它们的速度.
- 当通过在命令行中指定脚本名称来运行脚本时,脚本的字节码永远不会写入".pyc"或".pyo"文件.因此,通过将脚本的大部分代码移到模块并使用一个导入该模块的小型 bootstrap 脚本,可以减少脚本的启动时间.也可以在命令行上直接命名".pyc"或".pyo"文件.
Note:个
2015年9月15日,Python 3.5 release家公司实施了PEP-488,删除了.pyo
个文件.