1.将需要导包的文件父目录绝对地址添加到该列表中,可以通过.spec文件进行手动添加
或者命令行的形式(以我的为例)
-p D:\\JetBrains\\Project\\rob_ins
-p D:\\JetBrains\\Project\\rob_ins\\image\\alogrithm
-p 后面只能写一个路径,有多个需要写多个-p “路径”,通过空格进行分割,需要打包的文件(如detect.py)的父目录会默认添加。
-p "导包的文件父目录绝对地址"
2.需要隐式导入的模块,可以通过.spec文件进行手动添加yolo与autoanchor模块
或者命令行进行添加(同上):
--hidden-import=models.yolo
--hidden-import=utils.autoanchor
如果不添加也可以将这两个文件放到与打包后的可执行文件的文件夹下面,需要保持原目录结构不变
3.遇到yolo文件加载失败的问题,通过引用定位到autoanchor中使用了scipy的kmean函数。可以打包成文件夹(-D 打包为文件夹,-F打包为单个文件,默认使用-D命令,推荐使用-D,修改代码没有导新库直接替换比较小的.exe文件就行了),将自己的虚拟环境中的scipy包复制到打包文件夹下面覆盖原来的scipy文件夹。
ps.以前打包没有遇到这个问题不知道是不是因为scipy的版本问题
完整命令:
pyinstaller -p D:\\JetBrains\\Project\\rob_ins -p D:\\JetBrains\\Project\\rob_ins\\image\\alogrithm --hidden-import=models.yolo --hidden-import=utils.autoanchor web_server.py
跑通,正式使用还需要加-w参数,隐藏终端窗口