使用PyInstaller将python转成可执行文件exe笔记


Posted in Python onMay 26, 2018

1、安装PyInstaller

PyInstaller的作用如标题所说,首先需要下载PyInstaller和UPX,UPX是用来压缩exe的,点击超链接下载吧,目前稳定版本是1.3,注意选择你使用的操作系统。如在Windows下,将下载解压后的upx.exe放到PyInstaller解压后的文件夹内。设PyInstaller的文件夹为D:\PyInstaller,下同。命令行下进入D:\PyInstaller,运行Configure.py,应该看到如下信息:

I: computing EXE_dependencies
I: Finding TCL/TK...
I: found TCL/TK version 8.5
I: testing for Zlib...
I: ... Zlib available
I: Testing for ability to set icons, version resources...
I: ... resource update available
I: Testing for Unicode support...
I: ... Unicode available
I: testing for UPX...
I: ...UPX available
I: computing PYZ dependencies...

不能出现开头为E(Error)的信息,最好不要有W(Warning)的信息。如果出现找不到某dll,请把该dll文件放置到C:\Windows\system32下,一般能解决。

Linux用户还需要编译Runtime Executables,Windows用户不需要。主要是运行Make.py,会在PyInstaller\support\load\下生成run和run_d两个文件,详见PyInstaller\doc\Manual.html说明。

2、写一个Py程序

为了实验,写一个HelloWorld.py,假设保存在C:\HelloWorld.py

#!/usr/bin/env python
print 'Hello,World!'
words = raw_input('What do you want to say? ')
print 'you said:'+words

3、创建spec文件

spec文件是用来告诉PyInstaller要编译的py文件和参数的。执行"Makespec.py+参数+Py代码路径"就可以,主要参数如下(详见PyInstaller\doc\Manual.html):

-F, --onefile Py代码只有一个文件
-D, --onedir Py代码放在一个目录中(默认是这个)
-K, --tk 包含TCL/TK
-d, --debug 生成debug模式的exe文件
-w, --windowed, --noconsole 窗体exe文件(Windows Only)
-c, --nowindowed, --console 控制台exe文件(Windows Only)
-X, --upx 使用upx压缩exe文件
-o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
--icon=<FILE.ICO> 加入图标(Windows Only)
-v FILE, --version=FILE 加入版本信息文件

对于HelloWorld.py,具体执行以下代码:

Makespec.py --onefile --console --upx --tk -o C:\ C:\HelloWorld.py

执行后C:\就出现HelloWorld.spec

4、Build spec文件,生成exe文件

执行:

Build.py C:\HelloWorld.spec

一长串信息之后,你会在C:\下发现HelloWorld.exe这个文件,就是它啦!体积还真不小,2.7M,这是因为这个HelloWorld程序杀鸡用牛刀罢了。此外其它的文件均是过程文件,可删除。

Python 相关文章推荐
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python 多核并行计算的示例代码
Nov 07 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
Dec 09 Python
Python实现的端口扫描功能示例
Apr 08 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
May 24 Python
详解Django中异步任务之django-celery
Nov 05 Python
python自动计算图像数据集的RGB均值
Jun 18 Python
Python带动态参数功能的sqlite工具类
May 26 #Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
May 26 #Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 #Python
Python多重继承的方法解析执行顺序实例分析
May 26 #Python
Python多继承顺序实例分析
May 26 #Python
Python装饰器用法实例总结
May 26 #Python
python 脚本生成随机 字母 + 数字密码功能
May 26 #Python
You might like
php中常用的预定义变量小结
2012/05/09 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
详解python并发获取snmp信息及性能测试
2017/03/27 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
python 深度学习中的4种激活函数
2020/09/18 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
几个Shell Script面试题
2012/08/31 面试题
函授自我鉴定
2013/11/06 职场文书
球队口号
2014/06/18 职场文书
本科应届生自荐信
2014/06/29 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript