Pyinstaller打包深度学习框架torch(torchvision)问题解决

本文介绍了在使用Pyinstaller打包包含torch和torchvision的程序时遇到的运行问题,特别是当torchvision版本大于等于0.3.0时。解决办法包括回退torchvision到0.2版本,复制其C++扩展库到0.3+版本,并修改相应函数,确保与torch版本兼容。详细步骤和注意事项文中均有说明。
摘要由CSDN通过智能技术生成

使用pyinstaller打包程序的时候经常会出现各种各样的问题,根据本人花费了两天的时间解决问题的实际经验来看,要认真分析问题,理解Pyinstaller的打包机制才能从根本上解决问题。

打包pytorch遇见的问题

出现failed to execute script

问题解析

如果你想打包的程序包含torchvision, 且版本>=0.3.0则常规的打包方法到最后是行不通的,程序是不可运行的
查看torchvision的版本:

>>> import torchvision
>>> torchvision.__version__
'0.2.2'
>>>

解决办法:

可行的变通是自己将torchvision 0.2.2.post3 变为 0.3.0的版本。这个过程有些技巧性。
大概的思路是:0.2版本和0.3版本以及更高版本的核心区别是少了一个C++的扩展库,所以只要弄到这个库。步骤一:
【先安装torchvision==0.3.0 然后后进去torchvision这个包,拷贝一下里面的.pyd文件,以及一些其他的函数,然后将torchvision==0.3.0卸载】

pip uninstall torchvision
当你尝试使用`pyinstaller`工具将包含`torch`库的Python应用打包成可执行文件时,可能会遇到一些错误。这是因为`PyInstaller`可能不直接支持某些第三方库,尤其是那些依赖于复杂C/C++扩展或实时链接的库,如`torch`,它是一个深度学习框架,涉及大量底层编译。 常见的报错可能是关于缺失的动态链接库(DLLs)或者是找不到torch及其相关模块的问题。这通常是因为`pyinstaller`在打包过程中无法处理这些库的复杂依赖。 为了解决这个问题,你可以尝试以下步骤: 1. **添加路径**: 在`spec`文件中手动指定`hiddenimports`参数,包括`torch`和其子模块,例如:`hiddenimports=['torch', 'torch.nn', 'torch.optim']`。这有助于告诉`PyInstaller`哪些包需要在运行时被导入。 2. **处理依赖**: 对于`torch`的Cuda版本,确保所有必要的CUDA和cuDNN库也在系统的PATH中,并且已经安装了对应的`pycuda`、`cupy`等兼容库。 3. **构建环境**:确保你的开发环境中已经安装了完整的`torch`和`torchvision`,以及它们的二进制 wheel 文件,因为`pyinstaller`默认不会下载源代码进行编译。 4. **优化设置**: 使用`--onefile`或`--onedir`选项创建单个可执行文件或目录结构,这样可以在打包后自动处理一些依赖问题。 5. **检查错误详细信息**: 阅读具体的错误日志,它们通常会提供线索,如缺少的文件名或版本不匹配等。 6. **更新到最新版**: 有时候,新的`PyInstaller`版本可能已修复了一些对特定库的支持问题,尝试升级到最新的`pyinstaller`版本。 如果以上方法都不能解决问题,你可能需要考虑使用像`Nuitka`这样的工具,它专门针对这类问题进行了优化,或者寻求社区的帮助,在`PyInstaller`或`torch`相关的论坛上寻找解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绛洞花主敏明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值