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

What do the python file extensions, .pyc .pyd .pyo stand for?

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

  • PYC
  • PYD
  • PYO

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


  • .py:这通常是您编写的输入源代码。
  • 这是编译后的字节码。如果导入一个模块,python将构建一个包含字节码的*.pyc文件,以便以后更容易(更快)地再次导入。
  • .pyo:这是一个*.pyc文件,在启用优化(-O时创建。
  • .pyd:这基本上是一个windows dll文件。http://docs.python.org/faq/windows.html是-a-pyd-file-the-same-as-a-dll
  • 另外,关于.pyc.pyo的进一步讨论,请看:http://www.network-theory.co.uk/docs/pytut/compiledpythonfile.html(我复制了下面的重要部分)。

    • When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in ‘.pyo’ files. The optimizer currently doesn't help much; it only removes assert statements. When -O is used, all bytecode is optimized; .pyc files are ignored and .py files are compiled to optimized bytecode.
    • Passing two -O flags to the Python interpreter (-OO) will cause the bytecode compiler to perform optimizations that could in some rare cases result in malfunctioning programs. Currently only __doc__ strings are removed from the bytecode, resulting in more compact ‘.pyo’ files. Since some programs may rely on having these available, you should only use this option if you know what you're doing.
    • A program doesn't run any faster when it is read from a ‘.pyc’ or ‘.pyo’ file than when it is read from a ‘.py’ file; the only thing that's faster about ‘.pyc’ or ‘.pyo’ files is the speed with which they are loaded.
    • When a script is run by giving its name on the command line, the bytecode for the script is never written to a ‘.pyc’ or ‘.pyo’ file. Thus, the startup time of a script may be reduced by moving most of its code to a module and having a small bootstrap script that imports that module. It is also possible to name a ‘.pyc’ or ‘.pyo’ file directly on the command line.


    • .py-常规脚本
    • .py3-(很少使用)python3脚本。python3脚本通常以".py"not".py3"结尾,但我已经看过几次了
    • .pyc-编译脚本(字节码)
    • .pyo-优化的pyc文件(从python3.5开始,python将只使用pyc而不是pyo和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"。

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