mmsegmentation使用pyinstaller打包出现问题
mmsegmentation是商汤开源的语义分割框架,里面包含了大量SOTA模型,十分适合从事语义分割工作的小白学习。
最近想将mmsegmentation打包成exe进行使用,但是遇到了一个问题,在打包的过程中不会显示报错信息,但是在执行exe程序之后,exe会出现ModuleNotFoundError: No module named 'mmcv._ext'的报错,导致软件崩溃。
首先,可以查看第三方库是不是安装错误,可以参考mmcv安装博客。如果环境没有安装错误则继续往下看。
其次,为了排除这个报错信息,我们先从mmcv库中找到_ext文件或者属性,果不其然,寻找一遍后并没有发现这个东西在哪?难道这个问题没法解决?
最后,在mmsegmentation的github主页寻找类似的报错信息和类似提问,果不其然,也有人想将其进行打包使用,出现了一样的问题,点击转向Github原问题解释。里面有一个人解决了这个问题,就是使用pyinstaller屏蔽了这个第三方库的导入,打包之后就可以正常运行。
所以最后的打包命令为,将your_python_file改成你文件的名字:
pyinstaller -F --hidden-import=mmcv._ext your_python_file.py
亲自试验过,打包之后还是可以正常使用GPU进行加速计算。
pyinstaller类似情况也可以按照这种方法进行处理,但不一定可以解决问题,但也提供了一种解决问题的思路。
如shapely这个第三方包也出现了这个问题:
则在打包的时候添加一个--hidden-import=shapely._geos则可以避免这个问题。