使用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配置文件解析模块ConfigParser使用实例
Apr 13 Python
深入浅析python中的多进程、多线程、协程
Jun 22 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
对numpy中shape的深入理解
Jun 15 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 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
php中chdir()函数用法实例
2014/11/13 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
webpack file-loader和url-loader的区别
2019/01/15 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
详解Python中的Cookie模块使用
2015/07/06 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Python dict的常用方法示例代码
2020/06/23 Python
深入分析python 排序
2020/08/24 Python
建筑经济管理专业求职信分享
2014/01/06 职场文书
团干部培训方案
2014/06/03 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
Pandas自定义选项option设置
2021/07/25 Python
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android