Pyinstaller打包Pytorch框架所遇到的问题

目录
  • 前言
  • 基本流程
  • 一、安装Pyinstaller 和 测试Hello World
  • 二、打包整个项目,在本机上调试生成exe
  • 三、在新电脑上测试
  • 参考资料

前言

第一次尝试用Pyinstaller打包Pytorch,碰见了很多问题,耗费了许多时间!想把这个过程中碰到的问题与解决方法记录一下,方便后来者。

基本流程

使用Pyinstaller打包流程可分为以下三步:

  • 安装Pyinstaller,写个Hello world打包测试
  • 打包整个项目,在本机上调试生成exe
  • 将exe拷贝到新电脑上,测试和调试

一、安装Pyinstaller 和 测试Hello World

使用Pycharm打开项目,点击Terminal,输入以下命令:

pip install pyinstaller

请确保Terminal所在路径为项目根目录,以免在后续打包过程中找不到一些模块。图中红框内(pytorch)是我的项目所需要的虚拟环境。

编写Hello World测试,新建test.py:

if __name__ == '__main__':
  print("Hello World!")
  while True:
    pass

在Terminal输入以下命令,打包test.py:

pyinstaller -F test.py

回车运行,开始打包!在文件夹dist中找到test.exe程序,运行测试,没报错说明Pyinstaller安装成功。

二、打包整个项目,在本机上调试生成exe

实际的项目一般是多文件,打包过程远比Hello World复杂多了。打包项目的核心要点有两个:

  • 配置好.spec文件
  • 补齐依赖项

关于.spec文件配置详见参考链接一,这里不再赘述。需要注意的是,在测试阶段,打包时应设置为-D模式,方便补齐dll。本文重点讲dll及其依赖项的补齐。先安装必备工具Dependens,通过这个工具,我们可以得到.dll文件所需要的依赖项。在运行打包后的exe常常遇到以下的问题:

这提示我们系统缺少caffe2_nvrtc.dll或其对应的依赖项。

  • 先到对应路径查看caffe2_nvrtc.dll是否存在
  • 若不存在,直接在Anaconda配置环境的文件夹搜索,一般都可以找到。将找到的caffe2_nvrtc.dll复制粘贴到根目录
  • 若存在,说明是缺少caffe2_nvrtc.dll的依赖项,使用Dependencies工具查看所需要的依赖项,后补齐到根目录

Dependencies的使用非常简单,直接将.dll拖进去即可。这里以torch_python.dll举例

可以发现,缺少若干个dll文件,补齐便可。通过上述方法,依样画葫芦,基本可以解决关于dll报错的问题。
  但每次重新打包后,需要手动复制粘贴dll文件,很是麻烦,通过配置.spec文件可简化操作。以记事本方式打开.spec,找到datas:

小括号内有两个路径,第一个路径'kernel32.dll'表示原始数据路径,存放kernel32.dll的路径;第二路径为'.'表示目标路径,打包后原始数据存放的路径。意思就是将第一路径的东西在打包后,放在第二路径上。需要注意的是,这边我设置的是相对路径,相对于.spec中的pathex

三、在新电脑上测试

我使用的是pytorch的GPU版本,在新电脑上运行发现会报如下错误,应该是缺少cuda库的缘故。

我的解决办法简单粗暴,直接拷贝cuda包到移动硬盘

每次到新的电脑,添加cuda到环境变量

建议在程序额外设置一个选项,可将网络切换成CPU推理,以便在其他电脑测试时,即使环境未配置成功,也可通过CPU推理验证打包成功与否。最后,祝大家好运,打包成功那一刻是蛮喜悦的!

参考资料

到此这篇关于Pyinstaller打包Pytorch框架所遇到的问题的文章就介绍到这了,更多相关Pyinstaller打包Pytorch 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用pyinstaller打包python PyQt5程序

    目录 准备 工具准备 源代码准备 打包 参数说明 针对PyQt应用的改进 目前的小问题 解决办法 再次打包 代码仓库说明 当你有打包你的python应用的需求以后,你可能会像搜索引擎寻求帮助,你或许曾经搜索过"python 转 exe","python打包"等等这样的字眼,你或许曾看到过各种各样的相关解决方案,本文介绍的是其中的一种,但是可以负责任的说,这是目前最好的方案,并且是跨平台最好的方案,也就是说使用这个叫pyinstaller的工具,你可以把同样的代码打包

  • 总结Pyinstaller打包的高级用法

    一.安装pyinstaller PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包. 因是第三方包,所以需要安装一下: pip install pyinstaller 或者升级到最新版本: pip install --upgrade pyinstaller 或者安装开发者版本: pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz 当然了,也可以下载whl文件,

  • pyinstaller打包后,配置文件无法正常读取的解决

    目录 pyinstaller打包配置文件无法正常读取 pyinstaller又踩一坑,configparser os.mknod 完整代码 pyinstaller打包配置文件无法正常读取 import os file = os.path.dirname(os.path.abspath(__file__)) cf = configparser.ConfigParser() print(file) cf.read(file+'/data.ini') 先获取绝对路径在读取 pyinstaller又踩一

  • 教你使用pyinstaller打包Python教程

    一.单个文件打包 1.1 简单打包 例如现在有一个main.py文件内容如下 import os print("hello world") os.system("pause") 运行结果如图 现在用一下命令打包成一个可执行文件pyinstaller -F main.py 再同级目录下生成一个dist文件夹里面就会生成一个可执行文件,双击就可以执行 1.2 带图标打包 有的时候为了美观,可以给可执行文件加一个图标,这时用这个命令pyinstaller -F main.

  • Pyinstaller+Pipenv打包Python文件的实现示例

    目录 安装pipnev 前期准备 创建虚拟环境 进入虚拟环境 安装项目用到的库 使用pyinstaller打包 相信大家都试过将Python文件进行打包,来发给其他没有安装Python环境的用户使用,但通常情况下,打包生成的exe文件都很大,而产生这种情况的原因就是,打包并不会只打包我们所使用的一些库,在我们日常使用的环境中,可能会有很多没有用的关联库被一起打包.这时,创建一个虚拟环境就是最好的选择,然后在虚拟环境中进行打包. 安装pipnev pipenv 用来管理虚拟环境,先安装一下 pip

  • Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)

    问题 如何使用 pyinstaller 打包使用了 gettext 本地化的项目,最终只生成一个 exe 文件 起因 最近在用 pyhton 做一个图片处理的小工具,顺便接触了一下 gettext,用来实现本地化化中英文转换.项目主要结构如下: . |--src # 源码 | |--package1 | |--package2 | |--locales # 本地化文件 | | |--en # 英文 | | | |--LC_MESSAGES | | | |--en.mo | | |--zh # 中

  • 使用pyinstaller打包django的方法实现

    目录 Step 1: 生成spec文件 Step 2: 使用pyinstaller 构建可执行文件 虽然django项目我们一般通过部署服务器进行发布,但是也有些情况,可能就是一个小小的数据管理应用,也就内部几个人使用,想直接打包成一个应用,在没有任何python环境的普通的机器上就能运行,内网能访问就可以了. pyinstaller 就能够用来将python应用打包成可执行文件. Step 1: 生成spec文件 pyi-makespec -D manage.py 执行成功后,会显示如下信息,

  • 用python打包exe应用程序及PyInstaller安装方式

    目录 1.PyInstaller简介 2.PyInstaller安装 3. 准备需要的文件 4.使用Pyinstaller 5.参数的含义 6. 附圣诞树源文件 7. 源文件下载 1.PyInstaller简介 PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序. PyInstaller 制

  • Pyinstaller打包工具的使用以及避坑

    目录 一.基本使用 二.基本错误处理 1.当运行exe后出现提示:No module named XXX 2.当运行出现报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte 3.当运行出现这种报错:TemplateDoesNotExist at /index/ 4.项目缺少样式css和js 本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础

  • Pyinstaller打包Pytorch框架所遇到的问题

    目录 前言 基本流程 一.安装Pyinstaller 和 测试Hello World 二.打包整个项目,在本机上调试生成exe 三.在新电脑上测试 参考资料 前言 第一次尝试用Pyinstaller打包Pytorch,碰见了很多问题,耗费了许多时间!想把这个过程中碰到的问题与解决方法记录一下,方便后来者. 基本流程 使用Pyinstaller打包流程可分为以下三步: 安装Pyinstaller,写个Hello world打包测试 打包整个项目,在本机上调试生成exe 将exe拷贝到新电脑上,测试

  • pyinstaller打包exe程序的步骤和添加依赖文件的实现

    目录 pyinstaller打包exe程序和添加依赖文件 1.安装pyinstaller库 2.pyinstaller的打包机制 3.打包命令 4.添加导包外的一些依赖文件 5..spec方式打包 6.pyinstaller常用参数 pyinstall打包时的依赖问题 pyinstaller打包exe程序和添加依赖文件 或许我们并不是专业的程序猿,但是却可以通过python来提高我们的工作效率,减少加班时间,让代码替我们完成一些重复的工作,节省下来的时间去泡个妹子,牵牵小手不香吗 话不多说,马上

  • 解决pyinstaller打包pyqt5的问题

    pyinstaller打包使用pyqt5模块的时候,在win平台下,由于pyinstaller无法准确获取QT动态库文件路径,会报错导致无法打开运行程序,并提示错误信息pyinstaller failed to execute script pyi_rth_qt5plugins此时我们需要在打包的时候直接告诉pyinstaller到哪里去找,这个路径分隔符需要是unix形式: pyinstaller --paths C:/****/Python/Python35-32/Lib/site-pack

  • 利用pyinstaller打包exe文件的基本教程

    前言 PyInstaller可以用来打包python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了.PyInstaller支持Python 2.7和Python 3.3+.可以在Windows.Mac OS X和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成.exe文件,需要在Windows系统上运行PyInstaller进行打包工作:打包成mac app,需要在Mac OS上使用. 方法如下: 1.确保已安装python解释器 2.确认pip是否是最新版本

  • 如何使用pyinstaller打包32位的exe程序

    说明:原来安装的python为64位,故安装的pyinstaller和打包后的exe都为64位.而64位的exe文件在32位的win7操作系统下是无法执行的,显示不兼容.网上查询发现,简单(可能不方便)的方法是采用32位的python重新打包.这里,我使用的是conda构建32位python环境,然后再次打包.安装Anaconda的方法,感兴趣的可以查看.具体操作如下: 构建32位python环境 进入命令提示符窗口 set CONDA_FORCE_32BIT=1 //切换到32位 conda

  • 解决pyinstaller打包发布后的exe文件打开控制台闪退的问题

    解决步骤: 1.先打开一个cmd 2.cd到你的exe文件目录 3.输入    .\***.exe 以上这篇解决pyinstaller打包发布后的exe文件打开控制台闪退的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • pyinstaller打包单个exe后无法执行错误的解决方法

    1.执行环境说明 python版本3.7 直接使用pip进行安装pywin32.pyinstaller pip install pywin32 pip install pyinstaller 2.使用了第三方库的情况 建议在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退.pyinstaller -p参数是添加的pyinstaller打包程序时的扫描路径,假设venv\Lib\site-package

  • pyinstaller打包多个py文件和去除cmd黑框的方法

    1.打包多个py文件并且去除cmd黑框 格式:pyinstaller.exe -F 路径\文件名.py空格路径\文件名.py空格--noconsole 以上这篇pyinstaller打包多个py文件和去除cmd黑框的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题

    我们用python 打包的exe文件的时候,每次运行后面都有一个黑框框,比如我的这个: 用tkinter做的图形界面,打包成exe文件,每次运行都先有黑色框框,我们一般电脑用的带有图形界面的软件都没有黑色框框, 所以可以取消掉黑色框框么,答案是肯定的. 在我们打包的时候:如果是直接指定python文件进行pyinstaller打包的话,需要添加--noconsole 例如:pyinstaller -F mycode.py --noconsole 还可以这样pyinstaller -F -w my

  • 使用pyinstaller打包PyQt4程序遇到的问题及解决方法

    python pyinstaller pyqt4 打包 QWindows 最近在做课设,用pyqt设计界面.然后用pyinstaller打包程序后,双击运行却总是闪退,后来将exe文件拖到cmd窗口运行,提示错误信息为 This application failed to start because it could not find or load the Qt platform plugin "windows". 废话不多说直接上解决办法. 进入你安装pyqt的路径,找到 ./pl

随机推荐