pyinstaller打包pytorch无法在新机上运行之一步步解决问题

描述:记录自己在pyinstaller打包pytorch程序中出现的问题,因为在本机上打包过程cmd提示没有问题(其中忽略了waring,不知是不是坎坷的根本所在),exe可以正常运行,傻傻的以为打包成功了,但是后来发现无法在没有环境的机器上正常运行。在本机打包过程中,出现的问题不再描述。

环境:

win10

pytorch=1.3.1

torchvision = 0.4.2

python = 3.7

pyinstaller = 3.6

 

问题:

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

直接上图

在另外一台电脑上运行,出现如上如所示问题。讲下自己如何解决的。

解决思路:

1、首先想到的就是在打包过程中没有打包完全,根据Traceback信息中site-packages,信息提示程序中引用的batchgenerators和skimage、scipy打包有问题,遂重新使用pyinstaller打包,将三个模块进行hiddenimport,打包过程没有问题本机运行良好,新机依旧提示上图错误。

2、再次仔细阅读Traceback信息,发现''site-packages\batchgenerators\augmentations\color_augmentations...''等信息,心想打包可能还是有问题,再次尝试将Traceback信息中类似bachgenerators.augmentations的引用进行hiddenimport。反复多次发现Traceback虽然有减少但是始终无法全部消除,这里消耗了自己一天左右的时间。

3、既然hidden import,怀疑pyinstaller版本过低,从3.5更新到3.6,继续打包还是不能完全解决,就直接将sitepackage中batchgenerators的安装生成程序直接加入打包程序中,这里消耗了自己好多时间。

4、然而又出现了新的问题,

site-packages\torch\__init__.py,line81

经过直接添加安装包程序的方法,打包后的程序已经很大了,试过发现torch安装包直接放入会更大,本着先运行再优化的原则,我依旧放入了,运行第一次依旧出现问题。想到打开torch.__init__.py查看此处代码是from torch._C import *,网上搜索这个问题,有人说是python版本问题,有说是系统环境变量问题,但是我的exe在本机运行没有任何问题,python版本也比较新,pyinstaller更新到了3.6,虽然不能直接解决我的问题却给了我提示,因这里的错误提示依旧是DLL load failed:找不到指定模块。于是我在pyinstaller打包程序时引用了torch的lib。

撒花!!!成功在无环境的机器上运行成功.

事后反思:

    pyinstaller出现DLL load failed:找不到指定模块

    先更新pyinstaller,相信更高的版本能够更好的使用。提示site-packages....可尝试将相关包进行hiddenimport,虽然没有解决我的问题(怀疑自己拷贝出了问题),但是说不定你的可以。提示torch\__init__.py定位到 from torch._c import * 的错误,应该也是torch包没有打包成功,在hiddenimport不管用时,直接引用他的lib。

但是打包后的程序实在太大,在部署pytorch各位小伙伴有没有更好的方法和案例,欢迎交流。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值