赞
踩
出现这个报错说明大概率是你的磁盘空间不够了,可以删除一些不用的文件,尤其是系统盘,就能够解决。
检查你的环境是否已经安装了对应的包,如果没有,直接pip install解决。
这个报错说明找不到我们的文件,对于这一类的报错有一个统一的解决办法,找到你环境中的pyinstaller,里面一个hooks文件夹,在这个文件夹中添加一个文件,注意命名格式统一为 'hook-xxxx.py',然后里面写入这两行代码:
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files(“xxxx”)
注意两处xxxx的要对应错误信息的xxxx,问题解决。
这个报错在网上有很多解决方法,但不适用于pyinstaller打包报错的情况,因为我在本地调试的时候是没有这个错误,说明是打包时出现的问题(因此不建议去下载mmcv-full,原因是最新版的已经改名为mmcv,到时又得下回来,别问我是怎么知道的),其实不只是这个文件,这一类的报错同样有一个统一的解决办法,就是在你的打包命令中加上 '--hidden-import mmcv.ext' ,报错其他文件名也是一样的格式替换就好,解决。
注意这个报错与第四个错误的区别:这个报错是我已经能够正常打开程序,但是发现有一些功能在打包后出问题了,经过异常捕获得出的报错;而第四个错误是打开程序时直接报错,导致程序连打开都不行。
解决方法:在定位到错误程序段后,发现文件的路径定义时使用了os模块,这里需要注意在打包后pyinstaller会os到 'C:\\Users\\86166\\AppData\\Local\\Temp' 这个路径而不是你本地调试时希望他找到的路径,因此解决办法就是将对应的路径改成相对路径或者绝对路径,这样就没有问题了。
但是我们打包的目的就是希望程序在另一台电脑也能够正常运行,因此我们可以使用函数:os.path.dirname(sys.argv[0])来获取正确的文件路径,将他赋给一个变量a,则变量a的值就是你的项目文件夹下dist文件夹(生成你的exe的文件夹)的路径,之后可以将你需要的文件复制一份到dist文件夹,然后通过路径a/../../..来定位你的文件。
最后注意每次修改后都要重新打包,将build,dist,.spec文件删掉后重新执行打包命令即可。
解决方法:加上--hidden-import=skimage.io即可
比如:pyinstaller -F -i seedling.ico --hidden-import=skimage.io application.py
明明有这个路径还是一直报错,后来发现好像是因为路径太长了,路径长度有限制,将路径改短就不会发生这个错误了。
我打包时遇见了这个问题,自定义的模块my_test_model找不到。解决方法,把自定义模块所在的路径添加到.spec文件Analysis中的pathex里面,如下图。
当我把第七个问题在代码里面修改之后,我在PyCharm中可以正常运行程序,但是当我打包出来,就会发生奇怪的错误(打包出来之后还是按照以前未修改前的程序执行的,所以还是报错,明明程序已经修改了)。反复尝试了不同的打包方式,也使用pyinstaller --clean去打包,都不行。代码里面肯定没问题,最后想会不会是虚拟环境的问题,尝试新建了一个虚拟环境,并且把需要的包都下载好,使用新建的虚拟环境去打包,然后成功解决!(不太清楚原本的虚拟环境打包出来为啥不能正常执行,反正就尝试吧)。
————————————————
前5条转自CSDN博主「m0_69704298」的原创文章
原文链接:https://blog.csdn.net/m0_69704298/article/details/132021970
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。