pytorch错误: 找不到指定的模块 Error loading “torch_python.dll“ or one of its dependencies

news2024/11/29 8:30:46

省流:python(3.12.7) 和 pytorch(2.4.0)版本不配套

问题

起因是看到了这本书《Build a Large Language Model (From Scratch) 》,是2024年9月新出的, 作者  Sebastian Raschka,想要按照作者给出的步骤来手搓一个大语言模型,以便后面拿出来吹牛。

作者在书中写道:

Therefore, when installing PyTorch, it’s advisable to use a version of Python that is one or two releases older. For instance, if the latest version of Python is 3.13, using Python 3.11 or 3.12 is recommended.

。。。。

I use PyTorch 2.4.0 for the examples, so I recommend that you use the following command to install the exact version to guarantee compatibility with this book:

pip install torch==2.4.0

为了防止和作者环境不一致,遇到一堆奇怪的问题,需要安装pytorch的2.4.0版本,但作者坑就坑在这里,没说自己用的哪个python版本,只是推荐3.11和3.12。

秉着[装新不装旧]的原则,上python官网找了个 3.12.7版本(win10 64位)来安装。然后用pip安装pytorch 2.4.0。看起来很顺利,但用起来就出问题了:

【OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\Python3127\Lib\site-packages\torch\lib\torch_python.dll" or one of its dependencies.】


C:\>python
Python 3.12.7 (tags/v3.12.7:0b05ead, Oct  1 2024, 03:06:41) [MSC v.1941 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python3127\Lib\site-packages\torch\__init__.py", line 148, in <module>
    raise err
OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\Python3127\Lib\site-packages\torch\lib\torch_python.dll" or one of its dependencies.
>>>

进入这个目录,发现 torch_python.dll 文件其实存在。那就上网找找解决方案。

一搜发现各种说法都有,比如python和pytorch版本不匹配,或者没安装c++库之类的。

我的想法是,既然作者都这样说了,应该不存在版本不匹配的问题。而且网上所说不匹配的版本,都是比较老的python和pytorch版本,估计不太可能是不匹配。

尝试1

继续翻找,发现官网有个21年的帖子 (https://github.com/pytorch/pytorch/issues/66988)好像比较贴近:

【提问者】import torch: Error loading "XXXX\torch_python.dll" or one of its dependencies. 

  • PyTorch Version: 1.8.1
  • Python version: 3.6.0

【回答者】 could you use https://github.com/lucasg/Dependencies to check which dependencies are missing?

【提问者】Thanks for your reply, it seems to be the version of python. I upgrade it and it is solved.

回答者给了个工具,好像能够定位具体问题所在。提问者说最后升级了python版本解决,也不知道过程中有没有使用这个工具。

于是吭哧吭哧去下载了这个 Dependencies 工具,但悲催的是比较愚钝,完全没有windows调试经验,遂放弃。

尝试2

又翻到一篇这个帖子(Cannot import torch on windows (dll problem) - PyTorch Forums),虽然问题现象有区别,但答复者给出了另一个工具:

Do you have visual studio ? If so:

  • run the gflags command as described in GitHub - peterjc123/pytorch_dll_load_smoketests: Dll load smoketests for PyTorch on Windows

跳转到这个工具的首页(https://github.com/peterjc123/pytorch_dll_load_smoketests),有如下内容:

The general process to report a DLL load failure is listed below.

  1. Install Debugging Tools on Windows Install WinDbg - Windows drivers | Microsoft Learn
  2. Open a Powershell / CMD with admin rights and type in the following commands
    gflags /i python.exe +sls
    cdb -o -c "~*g; q" python.exe -c "import torch"
    gflags /i python.exe -sls

看起来好像能用。于是去微软官网下载windbg,官网给出三种方式,一是直接下载,结果点击后直接403,坑。二是用微软的程序包管理器下载,三是在应用商店下载。没用过方式二,选择了方式三。

windbg安装完成后,执行 gflags报错,说没有这个程序。那估计是没加入路径。又想办法进入应用商店的安装路径WindowsApps下,找半天,都没有gflags.exe这个文件,为啥呢?不知道。遂放弃。

尝试3

在这篇帖子(https://blog.csdn.net/zhangle416520/article/details/140735371)内发现一张图,是python 和 pytorch的版本对应关系图,但只到2.3版本,缺少2.4版本的。也不知道他的图是哪里获取的。

还有另一篇帖子(how to find what is the latest version of python that pytorch - Stack Overflow),里面提供了两个思路,一是通过查找github issue来判断pytorch是否支持新版本的python:

Pytorch supports Python 3.10.

Python 3.11 isn't fully supported yet.

这个帖子是2023年初的,当时说3.11还没支持。但如果在issue中搜索3.12,会得到已经支持的说明。所以应该不是版本配套问题?

另一个思路是:

You can always check torch archive or torch nightly to see if your desired version is supported.

根据这个思路,进入 download.pytorch.org/whl/torch/,可以看到:

也说明这个版本应该是能配套的。

尝试4

目前看来不是版本配套问题,但又不会、也没法做windows调试,既然没路,那就随便试试吧。

把pytroch2.4.0给卸了,直接安装最新版的:

c:\>pip install torch
Collecting torch
  Downloading torch-2.5.1-cp312-cp312-win_amd64.whl.metadata (28 kB)
。。。。
Downloading torch-2.5.1-cp312-cp312-win_amd64.whl (203.0 MB)
   ---------------------------------------- 203.0/203.0 MB 591.3 kB/s eta 0:00:00
。。。。

然后再试试 import torch,竟然就成功了!!!!!

所以根本还是版本配套问题。早知道在Linux上搞估计就没这个问题了。

经过这一番折腾,也懒得将python降级,来匹配作者要求的pytorch 2.4.0版本。如果后面有不兼容问题再说。

恨这个作者,一句话浪费我半天时间。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透测试学习笔记(一)渗透测试方法论

一.渗透测试方法论 渗透测试方法论是制定实施信息安全审计方案时&#xff0c;需要遵循的规则&#xff0c;惯例和过程。人们在评估网络&#xff0c;应用&#xff0c;系统或者三者组合的安全状态时&#xff0c;不断摸索各种实务的理念和成熟的做法&#xff0c;并总结了一套理论-…

【论文阅读】如何高效阅读和理解学术论文

【论文阅读】如何高效阅读和理解学术论文 写在最前面一、为什么需要系统的阅读方法&#xff1f;二、阅读论文的11步方法三、实践示例四、常见问题解答五、结语 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持…

Java 基础面试 题(Java Basic Interview Questions)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

HCIE IGP双栈综合实验

实验拓扑 实验需求及解法 本实验模拟ISP网络结构&#xff0c;R1/2组成国家骨干网&#xff0c;R3/4组成省级网络&#xff0c;R5/6/7组成数据中 心网络。 配置所有ipv4地址&#xff0c;请自行测试直连。 R1 sysname R1 interface GigabitEthernet0/0/0ip address 12.1.1.1 255.…

利用阿里云镜像仓库和 Github Action 同步镜像

利用阿里云镜像仓库和 Github Action 同步镜像 由于某些未知原因,国内无法直接从 DockerHub 拉取镜像,在不使用 VPN 等违法工具的情况下,可以利用 GitHub 的 Action 流水线功能,将镜像推送到阿里云的个人镜像仓库中。 这种方式相较于其他方式虽然相对麻烦,但好在免费,且实…

HarmonyOS4+NEXT星河版入门与项目实战(22)------动画(属性动画与显示动画)

文章目录 1、属性动画图解2、案例实现-小鱼移动游戏1、代码实现2、代码解释3、资源图片4、实现效果3、显示动画4、案例修改-显示动画5、总结1、属性动画图解 这里我们用一张完整的图来汇整属性动画的用法格式和使用的主要属性范围,如下所示: 2、案例实现-小鱼移动游戏 1、代…

csp-j初赛模拟试题(解析)

题目&#xff1a; 在 C中&#xff0c;以下哪个关键字用于实现多态性&#xff1f; A. virtualB. staticC. externD. const 以下数据结构中&#xff0c;不属于线性结构的是&#xff08; &#xff09;。 A. 栈B. 队列C. 二叉树D. 链表 一个有 8 个顶点的无向图&#xff0c;若每个…

使用R的数据包快速获取、调用各种地理数据

数据一直是科学研究绕不开的话题&#xff0c;为了方便快捷的获取各种地理数据&#xff0c;许多R包被开发出来&#xff0c;今天介绍一些方便快捷的数据R包。 rnaturalearth 包使 Natural Earth 数据可用。自然地球特征包括 1&#xff1a;10m、1&#xff1a;50m 和 1&#xff1a…

C语言——指针初阶(一)

目录 一.什么是指针&#xff1f;&#xff1f;&#xff1f; 指针是什么&#xff1f; 指针变量&#xff1a; 总结&#xff1a; 总结&#xff1a; 二.指针和指针类型 指针-整数&#xff1a; 总结&#xff1a; 指针的解引用 总结&#xff1a; 三.野指针 如何规避野指针 往期…

游戏引擎学习第22天

移除 DllMain() 并成功重新编译 以下是对内容的详细复述与总结&#xff1a; 问题和解决方案&#xff1a; 在编译过程中遇到了一些问题&#xff0c;特别是如何告知编译器不要退出程序&#xff0c;而是继续处理。问题的根源在于编译过程中传递给链接器的参数设置不正确。原本尝试…

Paper -- 建筑物高度估计 -- 使用街景图像、深度学习、轮廓处理和地理空间数据的建筑高度估计

基本信息 论文题目: Building Height Estimation using Street-View Images, Deep-Learning, Contour Processing, and Geospatial Data 中文题目: 使用街景图像、深度学习、轮廓处理和地理空间数据的建筑高度估计 作者: Ala’a Al-Habashna 作者单位: 加拿大统计局特别商业项…

如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间

如何为 ext2/ext3/ext4 文件系统的 /dev/centos/root 增加 800G 空间 一、引言二、检查当前磁盘和分区状态1. 使用 `df` 命令检查磁盘使用情况2. 使用 `lsblk` 命令查看分区结构3. 使用 `fdisk` 或 `parted` 命令查看详细的分区信息三、扩展逻辑卷(如果使用 LVM)1. 检查 LVM …

命令行使用ssh隧道连接远程mysql

本地电脑A 跳板机B 主机2.2.2.2 用户名 B ssh端口号22 登录密码bbb 远程mysql C 地址 3.3.3.3 端口号3306 用户名C 密码ccc A需要通过跳板机B才能访问C; navicat中配置ssh可以实现在A电脑上访问C 如何实现本地代码中访问C呢? # 假设本地使…

Vatee万腾平台:以数字之名,筑企业未来之路

在当今这个瞬息万变的数字化时代&#xff0c;企业若想在激烈的市场竞争中脱颖而出&#xff0c;就必须紧跟时代步伐&#xff0c;实现全面数字化转型。而Vatee万腾平台&#xff0c;正是这样一款能够帮助企业迈向数字化未来的强大工具。 Vatee万腾平台&#xff0c;作为数字化转型…

深度学习——损失函数与BP算法

一、损失函数 1. 线性回归损失函数 1.1 MAE损失 MAE&#xff08;Mean Absolute Error&#xff0c;平均绝对误差&#xff09;通常也被称为 L1-Loss&#xff0c;通过对预测值和真实值之间的绝对差取平均值来衡量他们之间的差异。MAE的公式如下&#xff1a; 其中&#xff1a; 是…

机器学习-决策树(ID3算法及详细计算推导过程)

决策树是一种基于树结构进行决策的机器学习算法 &#xff0c;以下是关于它的详细介绍&#xff1a; 1.基本原理 决策树通过一系列的条件判断对样本进行分类或预测数值。它从根节点开始&#xff0c;根据不同的属性值逐步将样本划分到不同的分支&#xff0c;直到到达叶节点&…

【AI系统】LLVM 架构设计和原理

LLVM 架构设计和原理 在上一篇文章中&#xff0c;我们详细探讨了 GCC 的编译过程和原理。然而&#xff0c;由于 GCC 存在代码耦合度高、难以进行独立操作以及庞大的代码量等缺点。正是由于对这些问题的意识&#xff0c;人们开始期待新一代编译器的出现。在本节&#xff0c;我们…

浅谈网络 | 应用层之HTTPS协议

目录 对称加密非对称加密数字证书HTTPS 的工作模式重放与篡改 使用 HTTP 协议浏览新闻虽然问题不大&#xff0c;但在更敏感的场景中&#xff0c;例如支付或其他涉及隐私的数据传输&#xff0c;就会面临巨大的安全风险。如果仍然使用普通的 HTTP 协议&#xff0c;数据在网络传输…

基于 JNI + Rust 实现一种高性能 Excel 导出方案(上篇)

每个不曾起舞的日子&#xff0c;都是对生命的辜负。 ——尼采 一、背景&#xff1a;Web 导出 Excel 的场景 Web 导出 Excel 功能在数据处理、分析和共享方面提供了极大的便利&#xff0c;是许多 Web 应用程序中的重要功能。以下是一些典型的场景&#xff1a; 数据报表导出&am…

最新Linux下使用conda配置Java23或17保姆教程(附赠安装包)

随着技术的不断进步&#xff0c;越来越多的开发者开始在Linux环境下进行Java应用的开发。Java 17作为长期支持版本&#xff08;LTS&#xff09;&#xff0c;提供了许多新特性和性能改进。当然现在最新的是Java23&#xff0c;这个还作为实验版本未广泛使用。对于需要管理多个编程…