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中,链接在可用函数列表中定义。