现在的位置: 首页 > 云计算 > 正文

Python文件扩展名:.py、.pyc、.pyw、.pyo、.pyd有什么区别?

2020年02月18日 云计算 ⁄ 共 968字 ⁄ 字号 评论关闭

  Python文件扩展名有很多,比如.py、.pyc、.pyw、.pyo、.pyd等到,那你知道这些扩展名有什么区别吗?

  py 文件

  以 .py 作扩展名的文件是 Python 源代码文件,由 python.exe 解释,可在控制台下运行。可用文本编辑器进行修改。

  .pyc 文件

  以 .pyc 作扩展名的文件是 Python 编译文件。.pyc 文件是不能用文本编辑器进行编辑的, .pyc 文件的作用是为了加速模块的加载速度,通常在__pycache__文件目录下。

  .pyw 文件

  .py 文件执行时,桌面会出现类似 CMD 命令的黑色窗口。

  如下图,我们编写的 PyQt5 程序,在执行后就出现命令行窗口,甚至还有部分内容输出。

  .pyw 文件执行的时候不会出现类似 CMD 命令的黑色窗口。

  当然有时没有窗口也会带来一些问题,要是程序有问题,错误信息不容易看到,不方便修改、调试。

  .pyo 文件

  .pyo 文件是优化编译后的程序。 “python -O 源文件” 即可将源程序编译为 .pyo 文件。从Python3.5开始,Python将只使用pyc而不是pyo和pyc。如下图所示:

  .pyd 文件

  .pyd 文件并不是用 Python 编写成的,.pyd 文件一般是其他语言编写的 Python 扩展模块。类似一个Windows DLL文件。如下图所示:

  这里提一个问题:* .pyd文件是否与DLL相同?

  是的,.pyd文件是dll,但有一些差异。 如果你有一个名为foo.pyd的DLL,那么它必须有一个函数PyInit_foo()。然后你可以编写Python“import foo”,Python将搜索foo.pyd(以及foo.py,foo.pyc),如果找到它,将尝试调用PyInit_foo()来初始化它。 您没有将.exe与foo.lib链接,因为这会导致Windows要求存在DLL。

  请注意,foo.pyd的搜索路径是PYTHONPATH,与Windows用于搜索foo.dll的路径不同。 此外,foo.pyd不需要存在来运行您的程序,而如果您将程序与dll链接,则需要dll。 当然,如果你想说import foo,则需要foo.pyd。 在DLL中,使用__declspec(dllexport)在源代码中声明链接。 在.pyd中,链接在可用函数列表中定义。

抱歉!评论已关闭.