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中线程编程之threading模块的使用详解
Jun 23 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
Django开发的简易留言板案例详解
Dec 04 Python
pytest中文文档之编写断言
Sep 12 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
python进度条显示之tqmd模块
Aug 22 Python
selenium如何定位span元素的实现
Jan 13 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
python数字图像处理数据类型及颜色空间转换
Jun 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 - Html Transfer Code
2006/10/09 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php HTML无刷新提交表单
2016/04/05 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
python实现字符串中字符分类及个数统计
2018/09/28 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
如何学习Python time模块
2020/06/03 Python
python 19个值得学习的编程技巧
2020/08/15 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
单位领导证婚词
2014/01/14 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
服务器间如何实现文件共享
2022/05/20 Servers