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中的try和finally和with方法
May 05 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
django主动抛出403异常的方法详解
Jan 04 Python
Python 变量的创建过程详解
Sep 02 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
Python基础详解之邮件处理
Apr 28 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 表单验证实现代码
2009/03/10 PHP
php MessagePack介绍
2013/10/06 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
解密效果
2006/06/23 Javascript
js一组验证函数
2008/12/20 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
Three.js学习之网格
2016/08/10 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
浅谈vue权限管理实现及流程
2020/04/23 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
Python判断操作系统类型代码分享
2014/11/22 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
基于python实现坦克大战游戏
2020/10/27 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
渡河少年教学反思
2014/02/12 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
2014年团队工作总结
2014/11/24 职场文书
职代会闭幕词
2015/01/28 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB