前言
将pytorch的环境打包到一个exe里,使其不依赖虚拟环境和其他配置包等,非常的好用。。
记录一下踩坑
有问题可以留言,互相交流一下。。网上资料也不多= =
一、pyinstaller安装
pip install pyinstaller
根据需要使用相应的参数,安装非常的简单- -不会遇到什么问题。
By The Way:使用-F的时候程序会运行的比较慢,但是空间占用会比-D的小,-D比较快但是会产生一个目录,不够简洁,还比较大。
-F参数能不用就尽量不用,打包一时爽,打开花5秒,,hhh
二、打包
1.使用conda加虚拟环境进行打包(fail)
https://github.com/pyinstaller/pyinstaller/issues/5397
遇到了上面一摸一样的问题,可以看看0.0
可能是conda版本太高,或者其他原因,反正没成功。但是也有人成功了
2.使用pip安装并打包(succeed)
用pip安装所有依赖的包,不使用虚拟环境,进行打包可以成功。
出现WARNING: file already exists but should not: C:\Users\workAI\AppData\Local\Temp
找到.spec配置文件修改配置文件,在配置文件中加入以下代码:
for d in a.datas:
if '_C.cp37-win_amd64.pyd' in d[0]:
a.datas.remove(d)
break
如果打包后的exe文件打开一闪而过,出现了问题,需要看是什么问题可以使用cmd去运行exe
多线程问题:
在 if name == ‘main’:的方法下面添加
import multiprocessing
multiprocessing.freeze_support()
no model 问题:
关于动态加载的module导入问题
pyinstaller打包是无法找到这些模块的,在使用时就会报"ImportError 找不到指定模块",这个时候就需要手动导入动态加载的模块。
hiddenimports=['a.a']
总结
感觉挺顺利的,主要是被conda坑了很久。
另外打包的时候会自己把cuda的那些依赖打包进去挺牛逼的- -,测试过只需要显卡驱动就能运行exe了。。非常的慢就是了。