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 相关文章推荐
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
TensorFlow变量管理详解
Mar 10 Python
简单实现Python爬取网络图片
Apr 01 Python
Python高级用法总结
May 26 Python
python矩阵转换为一维数组的实例
Jun 05 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
python opencv读mp4视频的实例
Dec 07 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
python轮询机制控制led实例
May 03 Python
python 利用toapi库自动生成api
Oct 19 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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作的文本留言本的例子(二)
2006/10/09 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
使用Apache的rewrite
2021/03/09 Servers
prettify 代码高亮着色器google出品
2010/12/28 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
python追加元素到列表的方法
2015/07/28 Python
全面理解Python中self的用法
2016/06/04 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
前台文员的岗位职责
2013/11/14 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
校庆筹备方案
2014/03/30 职场文书
2015年推普周活动方案
2015/05/06 职场文书
同学聚会开幕词
2019/04/02 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
Python进行区间取值案例讲解
2021/08/02 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js