Pyinstaller 打包exe教程及问题解决
作者:jokerBi 发布时间:2023-01-08 01:40:00
标签:pyinstaller,打包,exe
安装
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> | 将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的教程,详细研究一下他的参数配置
工欲善其事,必先利其器!
来源:https://www.cnblogs.com/jokerBi/p/10601108.html
0
投稿
猜你喜欢
- pandas基于numpy,所以其中的空值nan和numpy.nan是等价的。numpy中的nan并不是空对象,其实际上是numpy.flo
- 1. 算法描述冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们
- 项目地址githubpyenv does...改变每个用户系统级别的 python 版本为每个项目提供不同的 python 版本安装克隆到本
- <%'该函数作用:按指定参数格式化显示时间。'numformat=1:将时间转化为yyyy-mm-dd h
- 本文实例为大家分享了wxPython实现计算器的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-######
- Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回。使用property修饰的实例
- 本文实例讲述了Python基于回溯法子集树模板实现8皇后问题。分享给大家供大家参考,具体如下:问题8×8格的国际象棋上摆放八个皇后,使其不能
- 目的:在numpy数组中知道指定元素的索引函数: np.argwhere>>>x>>>array([[0
- 1.字符强转一切如果是字符串进行强制转换, 仅仅就是在原数据类型的两边套上引号2.list : 强制转换成列表""&qu
- 元字符(Meta Characters)是正则表达式中具有特殊意义的专用字符,在Python中也不例外,是用来指明前导字符(位于元字符前的字
- 代码如下:Function htmll(mulu,htmlmulu,FileName,filefrom,htmla,htmlb,h
- 利用Opencv中的Houghline方法进行直线检测—python语言这是给Python部落翻译的文章,请在这里看原文。在图像处理中,霍夫
- 起步Python3 起,str 就采用了 Unicode 编码(注意这里并不是 utf8 编码,尽管 .py 文件默认编码是 utf8 )。
- asyncio在Python 2的时代,高性能的网络编程主要是使用Twisted、Tornado和Gevent这三个库,但是它们的异步代码相
- 如下所示:a = [1,1,1,2,3,45,1,2,1]a.remove(1) result: [1,1,2,3,45,1,2,1]whi
- 在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范
- 虚拟环境管理创建虚拟环境#默认路径下创建虚拟环境conda create -n pythonVirtual python=x.x # -n:
- 导读:《我不是药神》是由文牧野执导,徐峥、王传君、周一围、谭卓、章宇、杨新鸣等主演的喜剧电影,于 2018 年 7 月 6 日在中国上映。影
- 问:怎样才能取得局域网中所有SQL Server的实例?答:请参考以下的具体步骤:SmoApplication.EnumAvailableS
- 使用conda和pip批量安装Python包在debug Yolov5之前,需要按照其txt文件中指定的包的版本来指定安装工程需要的Pyth