用pyinstaller打包pytorch遇到的问题

先说下自己打包的命令

pyinstaller -c -F xxx.py

上述命令的-F会直接打包为一个exe可执行文件,速度比较慢,对于解决报错效率不高,可以先用-D打包成目录来解决报错,可以正常运行了再打包为一个exe文件

打包成功后生成exe,运行exe后开始报错。。。。

1、import error: numpy.core.multiarray failed to import

我这边是numpy与opencv版本不兼容,查了好些博客,兼容版本如下
解决:python=3.6.8 numpy=1.16.4 opencv-python=3.4.5.20

2、No module named ‘cupy_backends.cuda.stream’

我这边代码使用了cupy,打包后exe报了一系列如上有关cupy的错误
解决:pyinstaller打包py文件后会生成同名spec的配置文件,该配置文件中有一属性为hiddenimports=[],将缺少的模块添加到[]内,如上错误则为hiddenimports=[‘cupy_backends.cuda.stream’],类似错误可同样解决
修改spec后再次打包用如下命令才是使用spec来进行打包

pyinstaller xxx.spec

3、failed to open nvrtc-builtins64_92.dll

具体原因不清楚,总之是打包后的exe需要调用该dll,但是没有
解决:在网上下了一个。。。确实是这样解决了,下载网址如下:
https://www.pconlife.com/
在上面这个网站里搜索到了同名的dll,将其直接和exe放到同一目录,不再报这个错

到目前在本机上就可以正常调用exe了,然而。。在一台没有配置python环境的新机器上就无法运行了,报了新错

4、ImportError:DLL load failed :找不到指定的模块

trackback是torch相关的,最开始以为的torch的dll没有打包进来,最终发现并不是,通过在Anaconda3文件夹里排查,是缺少Anaconda3\Library\bin\libiomp5md.dll,然而并不是将该dll与exe并列放置就行,将其拷到某环境变量路径下方可解决

以上就是打包过程中碰到的问题,不知道是否走了弯路,仅供参考

你可能感兴趣的:(python,pyinstaller)