pyinstaller参数介绍以及总结详解


Posted in Python onJuly 12, 2019

最近利用tkinter+python+pyinstaller实现了小工具的项目,在此记录下pyinstaller相关参数以及爬过的坑。

一、pyinstaller相关参数

-F, ?onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, ?onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, ?tk 在部署时包含 TCL/TK
-a, ?ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, ?debug 产生debug版本的可执行文件
-w,?windowed,?noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-c,?nowindowed,?console 使用控制台子系统执行(默认)(只对Windows有效) pyinstaller -c xxxx.py pyinstaller xxxx.py --console
-s,?strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
-X, ?upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
-o DIR, ?out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
-p DIR, ?path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
?icon= 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标 pyinstaller -i ico路径 xxxxx.py
?icon= 将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
-v FILE, ?version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, ?name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

二、pyinstaller爬坑总结

第一次玩pyinstaller,遇到了不少坑,在这里总结一下,以免日后再次掉坑里。

1、先从这次写的工具再说吧,写这个工具的初衷是由于自己手工造数据文件花了很长时间,然后就想着写个工具来解决这个问题(也是想锻炼下自己的代码能力,哈哈哈),利用下班晚上以及周末写了一周大概写出来了。

这个工具是个扫码支付文件生成工具,主要是解决手工造文件数据,有两个功能,一是基础扫码文件生成功能、二是大批量扫码文件生成功能,同时加上了用户auth控制。

在这里提醒大家,在代码里面尽量不要用import,能from.....import....就尽量用这个,因为如果是import的话,在打包的时候,会将整个包都打包到exe里面,没有意义的增大了工具的大小!

大概框架如下:

pyinstaller参数介绍以及总结详解

2、Gui开发完毕后,开始研究pyinstaller,也翻阅了论坛关于pyinstaller的相关用法,这里总结下我的工具的打包步骤

2.1、先下载pyinstaller,我比较懒,就直接用pip install pyinstaller,等待自动安装

2.2、在代码的路径下进行cmd,就直接跳转到该路径的cmd界面,切记路径中不要有中文

pyinstaller参数介绍以及总结详解

2.3、先用后台模式生成工具exe,命令为pyinstaller xxxx.py文件,主要目的是为了看报错信息,解决了报错后,再生成完整版的工具

tip:由于我的代码是存在依赖的,即多文件的,而非所有代码都在一个文件中的,所以我在这里没有使用-F,刚开始玩的时候不知道,老是用了-F生成了单文件的,没有生成依赖,老是不成功,各位朋友切记!

下图为命令生成的日志,红框部分则为exe工具生成的路径,如果在日志中只有info信息的话,说明打包过程没有问题

pyinstaller参数介绍以及总结详解

pyinstaller参数介绍以及总结详解

2.4、找到生成的exe文件,运行exe(生成的exe文件都会在dist目录下)

pyinstaller参数介绍以及总结详解

运行时,我遇到了以下的报错信息,是在dist找到相关的图片资源,所以需要把所有关于工具所需的资源(包含图片以及依赖的.py文件都放进dist下的项目目录中)

pyinstaller参数介绍以及总结详解

pyinstaller参数介绍以及总结详解

2.5、再次运行exe,此时运行成功,说明工具打包成功

pyinstaller参数介绍以及总结详解

2.6、重新生成exe工具,去掉后台模式以及更换掉图标

给大家推荐一个图标获取地址,里面ico蛮多的:easyicon

下载了自己心仪的ico后,用-i+ico路径来替换默认ico,这次重新生成exe工具,命令为pyinstaller -i ico路径 -w xxxx.py

pyinstaller参数介绍以及总结详解

再将需要的图片资源和代码文件放到dist下的项目文件夹中

pyinstaller参数介绍以及总结详解

2.7、运行exe,能够打开则表示pyinstaller打包exe成功

pyinstaller参数介绍以及总结详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python实现strcmp函数功能示例
Mar 25 Python
Python排序算法实例代码
Aug 10 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
一百多行python代码实现抢票助手
Sep 25 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
Python 支付整合开发包的实现
Jan 23 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
python生成并处理uuid的实现方式
Mar 03 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Flask搭建一个API服务器的步骤
May 28 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 #Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 #Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 #Python
Django中celery执行任务结果的保存方法
Jul 12 #Python
python hough变换检测直线的实现方法
Jul 12 #Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 #Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 #Python
You might like
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php知道与问问的采集插件代码
2010/10/12 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python中__new__与__init__方法的区别详解
2015/05/04 Python
python多进程实现进程间通信实例
2017/11/24 Python
python生成密码字典的方法
2018/07/06 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
消防先进事迹材料
2014/02/10 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
学习心理学的体会
2014/11/07 职场文书
呐喊读书笔记
2015/06/30 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python