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抓取Discuz!用户名脚本代码
Dec 30 Python
Python 列表(List)操作方法详解
Mar 11 Python
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
SVM基本概念及Python实现代码
Dec 27 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
Python读取YAML文件过程详解
Dec 30 Python
Python timeit模块的使用实践
Jan 13 Python
Keras实现将两个模型连接到一起
May 23 Python
Python容器类型公共方法总结
Aug 19 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
怎么使 Mysql 数据同步
2006/10/09 PHP
用PHP实现多级树型菜单
2006/10/09 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python判断有效的数独算法示例
2019/02/23 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
部队党性分析材料
2014/02/16 职场文书
报关专员求职信范文
2014/02/22 职场文书
青岛海底世界导游词
2015/02/11 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
党支部审查意见
2015/06/02 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技