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实现在同一网络中的本地文件共享方法
Jun 04 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
在Django中实现添加user到group并查看
Nov 18 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
python json.dumps() json.dump()的区别详解
Jul 14 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/23 PHP
PHP生成等比缩略图类和自定义函数分享
2014/06/25 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
php实现将Session写入数据库
2015/07/26 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
jQuery实现跨域
2015/02/03 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
javascript连续赋值问题
2015/07/08 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
node使用request请求的方法
2019/12/20 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python字符串对象实现原理详解
2019/07/01 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
师范生自荐信范文
2013/10/06 职场文书
2013的个人自我评价
2013/12/26 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
大专生自我评价
2014/01/28 职场文书
红领巾广播站广播稿
2014/02/01 职场文书
公共场所标语
2014/06/30 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server