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实现图片批量剪切示例
Mar 25 Python
理解python多线程(python多线程简明教程)
Jun 09 Python
Python的Django框架中if标签的相关使用
Jul 15 Python
python自动发邮件库yagmail的示例代码
Feb 23 Python
Python OpenCV实现视频分帧
Jun 01 Python
python安装gdal的两种方法
Oct 29 Python
Python实现FLV视频拼接功能
Jan 21 Python
TensorFLow 变量命名空间实例
Feb 11 Python
python实现翻译word表格小程序
Feb 27 Python
python实现人机五子棋
Mar 25 Python
python 瀑布线指标编写实例
Jun 03 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 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中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
vue 自动化路由实现代码
2019/09/03 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
python3爬取各类天气信息
2018/02/24 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Python通过Pillow实现图片对比
2020/04/29 Python
python raise的基本使用
2020/09/10 Python
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
贪污检举信范文
2015/03/02 职场文书
工会文体活动总结
2015/05/07 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python