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 相关文章推荐
Python2.x中文乱码问题解决方法
Jun 02 Python
Python中函数eval和ast.literal_eval的区别详解
Aug 10 Python
Django实现表单验证
Sep 08 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
python requests抓取one推送文字和图片代码实例
Nov 04 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
快速一键生成Python爬虫请求头
Mar 04 Python
python中 Flask Web 表单的使用方法
May 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
Js 中debug方式
2010/02/07 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
js的回调函数详解
2015/01/05 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
zTree树形菜单交互选项卡效果的实现方法
2017/12/25 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
python实现实时监控文件的方法
2016/08/26 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
PyQT实现多窗口切换
2018/04/20 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python正则表达式如何匹配中文
2020/05/27 Python
用Python制作音乐海报
2021/01/26 Python
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
原材料检验岗位职责
2014/03/15 职场文书
婚内房产协议书范本
2014/10/02 职场文书
自查自纠工作情况报告
2014/10/29 职场文书
采购员工作总结范文
2015/08/12 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
聘任书的格式及模板
2019/10/28 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
js判断两个数组相等的5种方法
2022/05/06 Javascript