使用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中的代码编码格式转换问题
Jun 10 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
通过python顺序修改文件名字的方法
Jul 11 Python
django2.0扩展用户字段示例
Feb 13 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Python包和模块的分发详细介绍
Jun 19 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
初学CAKEPHP 基础教程
2009/11/02 PHP
基于empty函数的判断详解
2013/06/17 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
Vue引入Stylus知识点总结
2020/01/16 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
python中global与nonlocal比较
2014/11/21 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
临床医学专业学生的自我评价分享
2013/11/21 职场文书
给孩子的新年寄语
2014/04/08 职场文书
五年级小学生评语
2014/12/26 职场文书
建国大业电影观后感
2015/06/01 职场文书
2015新员工工作总结范文
2015/10/15 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers