python html5 bootstrap 视频教程
德云社区 门户 行业资讯 行业标准 智控标准 查看内容

Python 常见文件格式 .py .pyc .pyw .pyo .pyd 之间的主要区别

2016-3-6 20:25| 发布者: digitser| 查看: 1646| 评论: 0|原作者: Python

摘要: Python 常见文件格式 .py .pyc .pyw .pyo .pyd 之间的主要区别 ython()是一种面向对象、解释型计算机程序设计语言。Python语法简洁、清晰,具有丰富和强大的类库。 Python源代码遵循GPL(GNU General Public Licen ...
自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
Python 常见文件格式 .py .pyc .pyw .pyo .pyd 之间的主要区别

Python([ˈpaɪθən])是一种面向对象、解释型计算机程序设计语言。Python 语法简洁、清晰,具有丰富和强大的类库。


Python 提供了一种中间编译结果保存机制,即 byte code,或更准确地说,保存 PyCodeObject。事实上,Python 确实提供了这样一种机制 —— .pyc 文件。在执行一个 .py 文件的源代码之后,Python 并不会自动生成与该 .py 文件对应的 .pyc 文件。Python 会根据需要自动触发、创建 .pyc 文件,原理很简单,就是利用 Python 的 import 机制。


在 Python 运行过程中如碰到 import abc 这样的语句,Python 将会在设定好的 path 中寻找 abc.pyc 或 abc.dll 文件。若没有这样的文件,而只是发现了 abc.py 文件,那么,Python 会首先将 abc.py 编译成相应的 PyCodeObject 中间结果,然后再创建 abc.pyc 文件,并将中间结果写入该文件。接下来,Python 才会对 abc.pyc 文件进行一个 import 动作,实际上也就是将 abc.pyc 文件中的 PyCodeObject 重新在内存中复制出来,加以运行。


由于 Python .pyc 文件的此种运行机制,所以,可随时删除所有中间过程 .pyc 文件,当 Python 再次运行时,还会重生成这些 .pyc 文件,对您所编辑程序的运行并无任何影响。当然,得有源代码才行。


视窗用 python.exe 运行 .py ,用 pythonw.exe 运行 .pyw。因为安装视窗版 Python 时,扩展名 .py 自动被登记为用 python.exe 运行, 而 .pyw 则被登记为用 pythonw.exe 运行。


智能编辑重构 批处理式 数字 Python IDE 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序)

http://dt.digitser.cn/zh-CN/ide/idepy/index.html


.py 文件

以 .py 作扩展名的文件是 Python 源代码文件,由 python.exe 解释,可在控制台下运行。


当然,也可用文本编辑器或其它专用 Python IDE (集成开发环境) 工具进行修改。


.pyc 文件

以 .pyc 作扩展名的文件是 python 编译文件。.pyc 文件是不能直接用文本编辑器进行编辑,其优点是 .pyc 文件的执行速度要远快于 .py 文件。


至于为什么要有 .pyc 文件,因为 .py 文件是可直接看到源码的。若是软件开发商,不可能把源码泄漏出去?所以,就需编译成 .pyc 后再发布。


但 .pyc 文件只是经简单编译,并未加密,因此,有些工具还能反编译它得出源代码。


.pyw 文件

.pyc 文件执行时,桌面会出现类似 CMD 命令的黑色 shell 窗口,十分难看,于是 .pyw 文件就应运而生了。.pyw 文件与 .pyc 文件的执行,本质上并没什么区别,只是 .pyw 文件执行的时候不会出现类似 CMD 命令的黑色 shell 窗口。


.pyw 文件格式主要是设计用来运行 Python 纯 GUI (图形用户界面) 程序的。纯 GUI (图形用户界面) 程序的用户不需要看到类似 CMD 命令的黑色 shell 控制台窗口。当 .pyw 文件运行时,所有 stdout、stderr 输出无效,所有原 stdin 的读取只会得到 EOF。


值得一提的是,开发纯 GUI (图形用户界面) 程序时,可暂时把 .pyw 改成 .py,以便运行时调出控制台窗口,看到所有错误信息,方便修改、调试。


注意:采用 PyQt、PySide 等 GUI (图形用户界面) 开发框架开发的程序,源文件仍可采用 .py,无需单独使用 .pyw。


.pyo 文件

"python -O 源文件" 即可将 Python 源程序编译成 .pyo 文件,但有时仍得采用 .pyc 作后缀,才能正常运行。


.pyo 文件是相对 .pyc 而言的,优化编译后的 Python 文件。 同样,.pyo 文件也不能直接用文本编辑器进行编辑。


通过数字  IDE 控制台选项卡集成的 python -O -m compileall -l ./ 命令能把当前目录下的所有 .py 编译成 .pyo 文件,不带 -l 参数可递归进子目录。


pyd 文件

.pyd 文件是由非 Python,其它编程语言编写 (或直接把 .py 文件转换成 .c 中间文件) 编译生成的 Python 扩展模块,是类似 .so .dll 动态链接库的一种 Python 文件。


每个 .pyd 文件实际上都封装了一个 Python module 模块。使用时,采用 import 路径名.modulename 或 from 路径名.modulename import ** 语言,路径名为 .pyd 文件所在的路径。


基于 Qt/C++ 的 PyQt PySide GUI (图形用户界面) 开发框架绑定,会为每个二次开发胶水代码所对应的 Qt/C++ 库 .dll 文件生成一个中间 .pyd 文件。PyWin32 项目分发包中,也存在很多 MicroSoft Windows OS 相应 .dll 文件的中间 .pyd 文件。


Cython 可将个人基于 Python 语言编写的 Python 模块编译成具有 C 语言特性的 .pyd 文件。



Cython 批量编译生成 *.PYD 文件工具

源码 Cython 化工具

若有使用外部或自定义模块, 请把相应路径添加到控制台配置对话框 PATH 变量框中。


编译时会根据所调用的 Python 解释器版本,自动切换 校正 .C 中间代码相应 2.7 3.x 语言级别。


官方链接:http://dt.digitser.cn/zh-CN/applet/cython_file/index.html;打包 .exe 文件工具 源码 PyInstaller


.PY 源代码经 Cython 化后有一些效率提升, 虽不是很明显但能感觉到。Cython 文档编制,快速入门教程在此。


Cython 会先把 .PXD .PY .PYW .PYX 文件转换成 .C 中间代码, 再编译成 .PYD 模块文件; 因此, 反编译 .PYD 文件只能获得 .C 中间代码 (无法获得最初源代码)。


扫一扫关注 德云社区

版权声明:本文为独家原创稿件,版权归 德云社区,未经许可不得转载。

路过

雷人

握手

鲜花

鸡蛋
AI人工智能 语音助理 人工翻译 教程

相关阅读

最新评论

Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译
Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制[35/2024-10-24]
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制采[24/2024-10-24]
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[24/2024-10-24]
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[21/2024-10-24]
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1592/2022-07-31]
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1723/2022-07-31]
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺 标准对称圆角最常用,但有时偶尔也会用到非对称圆角。 特别是模具、五金、电子、手饰、汽车、家具、玩具、等对圆[1414/2022-05-25]
NumPy 1.22 官方中文文档编制 手册帮助 更新日志
NumPy 1.22 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采用[997/2022-05-22]
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采[1164/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档编[1048/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档[1001/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中文[1619/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中[1480/2022-05-22]

Archiver|Sitemap|小黑屋|德云社区   

GMT+8, 2024-11-23 07:00 , Processed in 0.080703 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

返回顶部