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的高级Git库 Gittle
Sep 22 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
python调用webservice接口的实现
Jul 12 Python
python按行读取文件并找出其中指定字符串
Aug 08 Python
python实现WebSocket服务端过程解析
Oct 18 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
使用Python实现Wake On Lan远程开机功能
Jan 22 Python
python实现井字棋小游戏
Mar 04 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
如何理解python面向对象编程
Jun 01 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
详谈js原型继承的一些问题
2017/09/06 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
带你了解python装饰器
2017/06/15 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
python之从文件读取数据到list的实例讲解
2018/04/19 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
Python中Yield的基本用法
2020/10/18 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
党在我心中演讲稿
2014/09/02 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
python urllib库的使用详解
2021/04/13 Python
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技