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 28 Python
详解Python import方法引入模块的实例
Aug 02 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python统计单词出现的次数
Apr 04 Python
django模板结构优化的方法
Feb 28 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Python3内置模块random随机方法小结
Jul 13 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
Python列表切片常用操作实例解析
Dec 16 Python
Python中如何添加自定义模块
Jun 09 Python
python matplotlib库的基本使用
Sep 23 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判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python字典的常用方法总结
2019/07/31 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
美国最大点评网站:Yelp
2018/02/14 全球购物
社区工作者感言
2014/03/02 职场文书
家电业务员岗位职责
2014/03/10 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2014年接待工作总结
2014/11/26 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
重阳节主题班会
2015/08/17 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL