前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决 pynvml 报错 NVML Shared Library Not Found / WinError 126

解决 pynvml 报错 NVML Shared Library Not Found / WinError 126

作者头像
为为为什么
发布2022-08-05 11:05:23
1.2K0
发布2022-08-05 11:05:23
举报
文章被收录于专栏:又见苍岚又见苍岚

pynvml包直接在Windows系统上安装可能会报出模块找不到的错误,本文记录解决方法。

问题复现

在Windows中调用 pynvml.nvmlInit()时出错:

错误信息:

代码语言:javascript
复制
 File "E:\Program_Files\Annoconda\lib\site-packages\pynvml\nvml.py", line 731, in _load_nvml_library
    nvml_lib = CDLL(os.path.join(os.getenv("ProgramFiles", "C:/Program Files"), "NVIDIA Corporation/NVSMI/nvml.dll"))
  File "E:\Program_Files\Annoconda\lib\ctypes\__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] 找不到指定的模块。

问题分析

  • 在源代码文件 numl.py 中 731 行附近:
代码语言:javascript
复制
if (sys.platform[:3] == "win"):
    # cdecl calling convention
    # load nvml.dll from %ProgramFiles%/NVIDIA Corporation/NVSMI/nvml.dll
    nvml_lib = CDLL(os.path.join(os.getenv("ProgramFiles", "C:/Program Files"), "NVIDIA Corporation/NVSMI/nvml.dll"))
else:
    # assume linux
    nvml_lib = CDLL("libnvidia-ml.so.1")

可以看到模块在尝试寻找 C:/Program Files/NVIDIA Corporation/NVSMI/nvml.dll 文件,如果你的nvml.dll文件不在这就会报错。

解决方案

知道问题的原因,排除故障有两种方案,但都需要知道当前的nvml.dll文件在哪。

确定 nvidia-smi.exe 位置
  • 打开cmd,输入命令:
代码语言:javascript
复制
where nvidia-smi

会返回当前系统的 nvidia-smi.exe的位置 (前提是当前cuda安装正常,可以使用nvidia-smi)

  • 去相应位置查看,发现nvml.dll文件和他在一起,所以只要将代码中路径指向它就行了。
方案1: 修改源码:
  • 修改numl.py 中第 731 行代码:
代码语言:javascript
复制
nvml_lib = CDLL(os.path.join(os.getenv("ProgramFiles", "C:/Program Files"), "NVIDIA Corporation/NVSMI/nvml.dll"))

改为你自己的路径:

代码语言:javascript
复制
nvml_lib = CDLL(r"C:\Windows\System32\nvml.dll")

注意反斜杠路径需要在前面加 r

方案2: 为源码创建运行环境
  • 源码不会出错,错的是我们自己的环境,改过来就是了。
  • 创建文件夹C:\Program Files\NVIDIA Corporation\NVSMI
  • nvml.dll文件放在文件夹里
运行示例

参考资料:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月6日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题复现
  • 问题分析
  • 解决方案
    • 确定 nvidia-smi.exe 位置
      • 方案1: 修改源码:
        • 方案2: 为源码创建运行环境
          • 运行示例
          • 参考资料:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档