Pyinstaller打包torch程序终极保姆级历程

用Pyinstaller打包程序三天的经验

用pyinstaller打包程序,三天的问题,经验,总结,别问,跟着做就完事了。

一、创建新环境

首先,创建一个新的环境。
  1.因为如果原来的环境有Anaconda啥的,他会很多绑定的不需要的库也打包进去,导    致最终打包出来的文件很大。

  2.说一下 我的python是3.6版本,torch是1.2.0

  3.这里我们用pipenv来管理这个环境,很干净,下面跟我做

// 进入程序所在目录
(base) C:\Users\>d:
(base) D:\>cd D:\Study\dabao

用 pip install安装pipenv
  这里说一下我们所有的pip install都用源,这样能让我们的安装速度有质的飞升

pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple 包名
//举个例子
pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple pillow

  安装好pipenv以后,我们创建新的虚拟环境

pipenv --python 3.6  //根据自己的python版本选择

  进入环境

pipenv shell

  进入环境之后我们输入

pip list

  列出环境里的库,可以发现非常干净

二、安装程序需要的包

Tip1:
我们在写程序用到一个包时,比如说我要用到
  shutil.rmtree()
因此我需要导入包
  import shutil
这样就会导致我们在打包的时候会打包整个shutil导致文件变大,这时候我们可以
  from shutil import rmtree
然后将程序前的shutil去掉,直接用
  rmtree()
这样也可以减小最后生成包的大小

Tip2:
  我们在训练时用的应该是torch-gpu版本,打包时我们将下载torch-cpu版本,原因是gpu版本的torch打包后的大小可能是cpu版本的数倍之多,而且很多用户电脑中可能并没有gpu。
  这里提供torch cpu的下载方式:复制即可

pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple torch==1.2.0+cpu torchvision==0.4.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

  我们还需要将程序中的device改为cpu:
torch.device(“cpu”)
  在torch.load中还需要加上map_location=‘cpu’,即将原来的
torch.load(‘net’)
  改为
torch.load(‘net’,map_location=‘cpu’)

  安装好需要的库以及torch-cpu后,跟我做

pip uninstall torchvision
pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple torchvision==0.2.2.post3

  注意==的前后没有空格
  为什么下了个低版本的torchvision呢,我也不知道但我给你们实践了,查阅了其他仁兄的解决方法。如若不这么做,打包后我们打开生成的EXE后大概率会出现如下错误:

failed to execute scripts xxxx

  然后这EXE咱就白整了,跟着做就完了

三、用pyinstaller或者auto-py-to-exe打包!

1.pyinstaller
  首先安装pyinstaller

pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple pyinstaller

  然后cd到程序所在目录,-c是运行时打开控制台,我们可以先看看exe运行时会出现什么错误,-D是最后生成两个文件夹dist和build,exe就放在dist里。建议最后最终版在将-c改成-w隐藏控制台。
  这里说一下 -D 生成2个文件夹和 -F 生成单个exe文件的 差别
-F :生成单个exe文件,文件大小比-D小,但是打开以及运行贼慢,而且还经常有些小错误
-D:生成文件夹,文件大小较-D大,但是打开以及运行贼快。
  这里推荐先用 -c -D 调试BUG以及一些问题

pyinstaller -c -D xxx.py

  再用 -w -D

pyinstaller -w -D xxx.py

  当然这里再提一嘴,其实如果只是调试bug的话不管有没有隐藏控制台都无所谓,咱直接打开命令台,然后cd到程序的目录,然后在这里打开xxx.py,这不就有命令台了吗,不就能调试错误了吗。
Pyinstaller打包torch程序终极保姆级历程
  打包好之后的exe在dist文件夹里,如果咱们的网络有训练好的模型参数,直接复制了放到dist文件夹里就行,到时候要运行exe时可以创建一个快捷方式到桌面上,美滋滋。

2.auto-py-to-exe
  首先安装auto-py-to-exe

pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple auto-py-to-exe

  安装好后直接在命令行输入
auto-py-to-exe
  就会跳出来一个网页
Pyinstaller打包torch程序终极保姆级历程
  这些中文如果看了上面的pyinstall就知道要怎么操作了,我们先浏览py文件路径,然后选单目录,基不基于控制台无所谓,隐藏窗口的话到时候运行exe的时候到cmd命令行里运行便是,一样有控制台,然后附加文件里将训练好的网络模型啥的导入,(单文件我导入模型时总是有问题,尚未解决,便都用单目录模式)在设置里将生成的文件夹位置改一下,点转换就OK了。

四、一些问题,BUG

这个博主写了很多
链接: https://blog.csdn.net/Nirvana_6174/article/details/83961746.
其中我就遇到了这个
Pyinstaller打包torch程序终极保姆级历程按着他的改好了。
还有很多问题我想不起来了,反正直接百度就完事了,总有解决办法。

上一篇:[个人总结]pip安装tensorboard太慢


下一篇:.NET平台系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的选择建议