Python各种扩展名区别点整理


Posted in Python onFebruary 27, 2020

扩展名

在写Python程序时我们常见的扩展名是py, pyc,其实还有其他几种扩展名。下面是几种扩展名的用法。

py

py就是最基本的源码扩展名

pyw

pyw是另一种源码扩展名,跟py唯一的区别是在windows下双击pyw扩展名的源码会调用pythonw.exe执行源码,这种执行方式不会有命令行窗口。主要用于GUI程序发布时不需要看到控制台信息的情况。

pyc

在执行python代码时经常会看到同目录下自动生成同名的pyc文件。这是python源码编译后的字节码,一般会在代码执行时自动生成你代码中引用的py文件的pyc文件。这个文件可以直接执行,用文本编辑器打开也看不到源码。

pyo

pyo是跟pyc类似的优化编码后的文件。

pyd

pyd并非从python程序生成,而是其他语言写成的可以被python调用的扩展,例如C++写的动态连接库共python调用

程序发布的选择

以windows平台为例

打包为正常可执行程序

如果要公开发布程序,最常见的方式就是打包成exe程序了。打包的好处是使用者不需要考虑Python的运行环境,且也容易被接

受。但不好的是一般打包出来的程序都比较大,而且由于是依靠模块打包,有可能出现兼容性等问题。

常用的打包模块是pyinstaller。常用的打包命令是:

pyinstaller -F example.py

-F参数可将代码打包成单个exe程序。

另外如果是GUI程序不需要控制台窗口的还可以加上-w参数:

pyinstaller -w -F example.py

发布编译后的pyc/pyo

如果使用者有python环境,又不想让他们看到源码,就可以选择发布pyc/pyo文件。

直接执行的py文件不会自动生成pyc,需要手动编译一下。单文件编译:

import py_compile
py_compile.compile(r'c:\test.py')

文件夹编译:

import compileall
compileall.compile_dir(dirpath)

编译成pyo:

python -O -m py_compile file.py

如果是GUI程序不需要控制台窗口,可以新建一个pyw文件用于调用主pyc程序。pyw中只需要导入pyc程序即可。

发布源码py

发布源码一般是开源项目使用的,没什么需要说明的。直接发py文件就可以了,只要对方有环境就可以运行

Python 相关文章推荐
python使用百度翻译进行中翻英示例
Apr 14 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
详解Python用户登录接口的方法
Apr 17 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
python tkinter窗口最大化的实现
Jul 15 Python
python 标准差计算的实现(std)
Jul 29 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
在python3中实现更新界面
Feb 21 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
python3读取文件指定行的三种方法
May 24 Python
Flask response响应的具体使用
Jul 15 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 #Python
python程序文件扩展名知识点详解
Feb 27 #Python
python读取多层嵌套文件夹中的文件实例
Feb 27 #Python
python统计文章中单词出现次数实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 #Python
You might like
PHP4中实现动态代理
2006/10/09 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue之延时刷新实例
2019/11/14 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
python 默认参数问题的陷阱
2016/02/29 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
python3中布局背景颜色代码分析
2020/12/01 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
德国机车企业:FC-Moto
2017/10/27 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
介绍一下Make? 为什么使用make
2013/12/08 面试题
设计模式的基本要素是什么
2014/04/21 面试题
机械设计制造专业个人求职信
2013/09/25 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
销售经理工作职责
2014/02/03 职场文书
西式结婚主持词
2014/03/14 职场文书
教师暑期培训感言
2014/08/15 职场文书
颐和园英文导游词
2015/01/30 职场文书
杭白菊导游词
2015/02/10 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书