Win10下pyinstaller打包PyQt5+Pytorch

需要在Win10操作系统下,将pytorch写的一个分割模型打包成exe文件,在这里先用PyQt5简单的写了一个界面,然后用pyinstaller来进行打包。在这里记录一下完成的过程,遇到的一些问题。

出现的问题

首先就是PyQt5打包之后运行报错了,第一个错误是提示Win10下pyinstaller打包PyQt5+Pytorch
在网上搜索相关问题,在打包之后生成的spec文件下的hiddenimports里面加上"pkg_resources.py2_warn"就好了

接下来用pyinstaller对spec文件执行打包,生成的文件又出现了如下错误:
Win10下pyinstaller打包PyQt5+Pytorch
继续网上搜素相关问题,有大神提出在打包时加上PyQt5的bin文件路径,如pyinstaller --path C:\Users\yangg\AppData\Local\Programs\Python\Python35\Lib\site-packages\PyQt5\Qt\bin -F gui.py
果然加上之后这个问题就解决了。但是接下来又出现了新的问题:
Win10下pyinstaller打包PyQt5+Pytorch
· 提示是numpy好像不对劲,我使用的是1.18.0还是之后的最新版本来着,按照以前打包出现问题的解决方法:降低包的版本,卸载现在的,然后有下载了1.9几版本的numpy,问题又解决了。
但是问题总是接连不断的,Win10下pyinstaller打包PyQt5+Pytorch
好像pytorch这个包又出现了问题,我电脑上没有GPU,装的是CPU版本0.4.0,根据这个提示在网上也找不到相关答案,就卡在了这里。在spec里面加上torch的路径也不对,打出来的包还一个多G大。
最后决定重新开始,这次准备在虚拟环境 下重新安装一个专门打包的环境,装好各类包,
版本如下Win10下pyinstaller打包PyQt5+Pytorch
只控制了一下PyQt5的版本,其中安装PyQt5的时候,先pip安装了PyQt55.9.2,然后再安装的是PyQt5-stubs5.13.1.3,安装的时候好像又对前面的PyQt5的版本自动进行了改动,但是并没有影响后续使用和打包。Pytorch包是直接到Pytorch官网选择好对应配置直接复制命令到cmd里面下载的。然后装好各类依赖包,直接进行pyinstaller。
这次经过打包之后,提示了程序里用到的目录找不到,最后发现需要cd到主py文件下面进行打包各类工作,这个问题就解决了。然后又报出了一个错误Win10下pyinstaller打包PyQt5+Pytorch
pytorch又有一点问题,什么不允许资源什么的,在网上查找答案,大部分给出的解决方式是把torchvision的版本变成0.2.2.post3,照做之后并没有效果,还是报同样的错误。最后在*上找到了一个解决方案Win10下pyinstaller打包PyQt5+Pytorch
然后直接在主py文件里import os
os.environ[“PYTORCH_JIT”]=“0”
然后进行打包,果然问题解决了,打包之后的exe文件能够跑起来了!

总结

最开始是直接在系统的python环境中进行打包,出现了很多问题,尤其是包的版本问题,numpy,matplotlib,PyQt5版本等等很多问题,需要降低版本,但是最后也没有解决pytorch的问题。切换到虚拟环境下以后,上述问题打包后就很少出现,numpy什么的也没有报错,看来以后如果进行打包的话还是在一个纯净虚拟环境下进行打包比较好。
另外就是PyQt5的界面和后端程序打包时出现的问题,建议先解决PyQt5的问题,也就是先打包界面,确定没问题后再加上后台程序。
用pyinstaller打包算是用过两次了,每次也都是遇到了很多的问题,每次也都有新的体会,希望以后能掌握。