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中解析XML数据的方法
Oct 15 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
python2.x实现人民币转大写人民币
Jun 20 Python
机器学习实战之knn算法pandas
Jun 22 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Django用户认证系统 User对象解析
Aug 02 Python
基于django传递数据到后端的例子
Aug 16 Python
详解Python中的分支和循环结构
Feb 11 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
Python基于locals返回作用域字典
Oct 17 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 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
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JS判断数组里是否有重复元素的方法小结
2019/05/21 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python中int与str互转方法
2018/07/02 Python
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
艺术用品:Arteza
2018/11/25 全球购物
乐高西班牙官方商店:LEGO Shop ES
2019/12/01 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
幼儿园开学家长寄语
2014/01/19 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
我的画教学反思
2014/04/28 职场文书
工地安全标语
2014/06/07 职场文书
支行行长岗位职责
2015/02/15 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python