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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
python装饰器初探(推荐)
Jul 21 Python
Python如何实现文本转语音
Aug 08 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python中的默认参数实例分析
Jan 29 Python
Python简单生成随机数的方法示例
Mar 31 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
哪些是python中web开发框架
Jun 17 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
详解MindSpore自定义模型损失函数
Jun 30 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP中的类-什么叫类
2006/11/20 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
基于python实现FTP文件上传与下载操作(ftp&sftp协议)
2020/04/01 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
新手学python应该下哪个版本
2020/06/11 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
环保建议书
2014/03/12 职场文书
白岩松演讲
2014/05/21 职场文书
2014年班级工作总结
2014/11/14 职场文书
2015年司机工作总结
2015/04/23 职场文书
大学生实习介绍信
2015/05/05 职场文书
志愿者工作心得体会
2016/01/15 职场文书
简历自我评价范文
2019/04/24 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
MySQL笔记 —SQL运算符
2022/01/18 MySQL