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学习笔记之os模块使用总结
Nov 03 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python 获取图片分辨率的方法
Jan 08 Python
如何使用Python实现自动化水军评论
Jun 26 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python Event事件、进程池与线程池、协程解析
Oct 25 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 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
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
vue element自定义表单验证请求后端接口验证
2019/12/11 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
跟老齐学Python之Python安装
2014/09/12 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
网络工程师的自我评价
2013/10/02 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
六查六看剖析材料
2014/10/06 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
教师考核鉴定意见
2015/06/05 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
使用pytorch实现线性回归
2021/04/11 Python