pyinstaller 基本操作:
pyinstaller -w KingDeePTE.py -i staticfiles\kdicon.ico --workpath ..\project\build --distpath ..\project\dist --clean
其中:
-
-w
:作用是运行打包好的文件时,不弹出黑色命令行窗口 -
--workpath
:作用是用于存放打包过程中产生的临时文件 -
--distpath
:作用是可执行文件的存放路径 -
-i
:后面跟的是图标所在路径 -
clean
:作用是清除缓存
今天下午第N次尝试对pdf转excel程序进行了打包操作。结果依旧不尽如人意,点击exe文件后还是只弹出了黑色的命令行窗口(当时我打包时并没有添加-w
来取消命令行窗口的弹出,为的是查看是否会报错),而且,打开任务管理器的时候看到内存占用直接飙到了80%多,并还在增长,我不得不怀疑自己是不是开发了一个蠕虫病毒出来(┭┮﹏┭┮)。在长时间质疑自己代码是不是存有问题无果之后,我决定把矛头对准了pyinstaller这个工具库,我的直觉告诉我,绝对是这厮在搞事情。然而,我一直无法查到解决方案,倒不是网上没有,而是我根本就不知道问题是什么,多进程最大的坏处就是无法捕捉其漏洞在哪里。正当我苦恼的时候,工友过来和我谈论,我把问题告知了他,虽然在python库方面他并不是很懂,但是谈话中有一点提醒了我,工友提到了递归和多进程。我当时就想会不会是代码里的多进程和pyinstaller产生了矛盾,因为任务管理器里面看到的景象根源是多进程自己打开自己。带着这个思路,我去网上查询了问题,果然还真有人问了并且提供了解决方案,以下就是解决方案。
解决方案:
在windows上Pyinstaller打包多进程程序需要添加特殊指令。
这里是官方github给出的解释:
https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing
修改方式比较简单,在if __name__=='__main__:'
下添加一句multiprocessing.freeze_support()
即可。
if __name__=='__main__':
# 在此处添加
multiprocessing.freeze_support()
# 这里是你的代码
# ......
跟着作者的意思,我在代码里面的主函数里面添加了这一句,问题迎刃而解。
提供解决思路的文章路径:https://blog.csdn.net/zyc121561/article/details/82941056