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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
整理Python 常用string函数(收藏)
May 30 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
Python多层装饰器用法实例分析
Feb 09 Python
python 删除非空文件夹的实例
Apr 26 Python
Flask之flask-script模块使用
Jul 26 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
Dec 30 Python
python3.8下载及安装步骤详解
Jan 15 Python
解决python执行较大excel文件openpyxl慢问题
May 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
PHP多个版本的分析解释
2011/07/21 PHP
PHP使用正则表达式清除超链接文本
2013/11/12 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
使用 Node.js 开发资讯爬虫流程
2018/01/07 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
django使用graphql的实例
2020/09/02 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
入党思想汇报
2014/01/05 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
nginx优化的六点方法
2021/03/31 Servers
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android