Pyinstaller 打包exe教程及问题解决


Posted in Python onAugust 16, 2019

安装

pip insatll Pyinstaller

参数

pyinstaller -Fw main.py

参数 概述
-F,-onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
-D, ?onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
-K, ?tk 在部署时包含 TCL/TK
-a, ?ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
-d, ?debug 产生debug版本的可执行文件
-w,?windowed,?noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
-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
-v FILE, ?version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
-n NAME, ?name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

注意事项

  • 如果程序有采用外部文件,如配置文件, 需要将文件放在dist中
  • -F 适合生成一个单一可执行的文件
  • -o 适用于多个文件引用情况,或者框架的结构

打包进程相关代码失败

例如编写一些进程相关的shell命令,打包失败,一般是使用 -F 可以成功,但是执行exe时有cmd弹窗,这非常不美观, 如果使用-Fw c参数执行exe 直接失败。 这种情况有两种解决方案。

方案一: 使用 pyinstaller -Dw file.py 生成的是一个目录文件。 程序执行成功,无黑名终端弹窗情况。

方案二: 起用 os.popen() 方法, 改用subprocess.Popen() 模块

​ 下面是我的测试,亲测成功, 参数一定要配置好,否则程序执行失败!

import subprocess
def checkprocess():
  processnames = ['EXCEL.EXE']
  for processname in processnames:
    p = subprocess.Popen('taskkill /F /IM %s' %processname,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
    p.wait()
checkprocess()

有空写一个 关于subprocess的教程,详细研究一下他的参数配置

工欲善其事,必先利其器!

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

Python 相关文章推荐
python中sets模块的用法实例
Sep 30 Python
Python通过select实现异步IO的方法
Jun 04 Python
Python玩转Excel的读写改实例
Feb 22 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
Django自定义模板过滤器和标签的实现方法
Aug 21 Python
Python:slice与indices的用法
Nov 25 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
python 如何区分return和yield
Sep 22 Python
python logging模块的使用详解
Oct 23 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
Feb 25 Python
Python 实现Mac 屏幕截图详解
Oct 05 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 #Python
Python Web框架之Django框架文件上传功能详解
Aug 16 #Python
基于 Django 的手机管理系统实现过程详解
Aug 16 #Python
python创建与遍历List二维列表的方法
Aug 16 #Python
python每天定时运行某程序代码
Aug 16 #Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 #Python
Python Web框架之Django框架Form组件用法详解
Aug 16 #Python
You might like
Laravel5.1 框架路由基础详解
2020/01/04 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python跳出双层for循环的解决方法
2019/06/24 Python
Django 路由控制的实现
2019/07/17 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
大专自我鉴定范文
2013/10/23 职场文书
大学运动会通讯稿
2014/01/28 职场文书
学生宿舍管理制度
2014/01/30 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
民间个人借款协议书
2014/09/30 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
python实现双链表
2022/05/25 Python