一、情况说明
1.我这个python后端是利用python xxxxx.py --参数1 {} --参数2 {}...这样启动的,完全没有问题。
2.使用 pyinstaller -D xxx.py 指令打包以后,显示如下
反正我阅读理解感觉是没有问题
3.打开CMD以后,用 xxx.exe --参数1 {} --参数2 {}...的方式 写在bat里去运行,就遇到了如下问题
网上搜索以后发现这似乎是个共性问题,大家伙都是这样
4.目前搜索下来有大致三个方法:
一是在主文件头部加代码,但是感觉太呆了,这要是文件多的话,一条一条加日子不过了。
import sys
sys.path.append(r"F:\Program Files\Python\Python36\Lib\site-packages\keras_yolo3\keras-yolo3") #添加自定义模块的路径
二是去系统环境变量里Path中添加Lib-packages所在路径,但不适用我这个情况,我这报缺少的模块是本身就在项目中的一个文件夹。
三是以记事本打开生成的“XX.spec”,在hiddenimports中添加相应的提示缺少的模块名。然后在pytharm的Terminal输入框中输入以下命令后:“Pyinstaller 文件名.spec”,等待打包结束。结束后再运行生成的软件测试是否成功,不成功的话继续添加提示缺少的其他模块,直到软件正常运行。
二、各种尝试
1.刚才灵光一闪,既然缺少本身就有的那个文件,我再看了一下生成的的文件夹里有什么,就本身项目的逻辑就是主程序调用一些现成的东西,所以打包的时候它应该是只把跟我要的xxx.py的相关包打包了,至于xxx.py调用的不归他管。既然如此我直接把原来的项目中其他东西复制粘贴过来不就行了!
非常的纯正,至少现在没有重复报错了,说明这一步我的操作没毛病,然后我去检查了一下,我本身环境里有pypinyin这个包。
2.想偷懒,我直接去site-packages里把他拷过来
U1S1,真有效果,开始蚂蚁搬家(搬到之前打包生成的_internal文件夹里).这个问题解决了
3.现在出现新问题
网上看了两篇,似乎都是采用以下方法,好像就是之前网上看到的,就缺少包-》打包的时候加点少的东西,反正重新打包跑不了,总归要试的。
三、总结
加上后续那一坨重新打包导出,再蚂蚁搬家把一些第三方库复制进去就能跑了,建议第一次复制的时候新建个文件夹放,这样后面就不用再一个一个搜索单独复制了。
PS:第三方包除了自身还有有个xx-disc-info的东西,那个也一起复制进去比较稳妥,有的包缺少这个的话它检测不到,后端堂堂完结!