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代码使其加快作用域内的查找
Mar 30 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python中的index()方法使用教程
May 18 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
python机器学习实现决策树
Nov 11 Python
Python求正态分布曲线下面积实例
Nov 20 Python
win10从零安装配置pytorch全过程图文详解
May 08 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
Python实现http接口自动化测试的示例代码
Oct 09 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
用户的详细注册和判断
2006/10/09 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
浅析vue数据绑定
2017/01/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
vue递归获取父元素的元素实例
2020/08/07 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
Python socket编程实例详解
2015/05/27 Python
在Python中移动目录结构的方法
2016/01/31 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
python连接mongodb集群方法详解
2020/02/13 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
市场策划求职信
2014/08/07 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
2016优秀教师先进个人事迹材料
2016/02/25 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技