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

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

问题复现

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

错误信息:

 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 行附近:
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文件不在这就会报错。

解决方案

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

确定 nvidia-smi.exe 位置
  • 打开cmd,输入命令:
where nvidia-smi

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

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

改为你自己的路径:

nvml_lib = CDLL(r"C:\Windows\System32\nvml.dll")

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

方案2: 为源码创建运行环境
  • 源码不会出错,错的是我们自己的环境,改过来就是了。

  • 创建文件夹C:\Program Files\NVIDIA Corporation\NVSMI

  • nvml.dll文件放在文件夹里

运行示例

参考资料:

  • https://blog.csdn.net/com_fang_bean/article/details/107988018
  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
引用提供了解决此问题的方法:复制nvml.dll文件到指定目录即可解决。具体来说,将nvml.dll文件从C:\Windows\System32复制到C:\Program Files\NVIDIA Corporation\NVSMI文件夹中即可。引用展示了错误信息中提到的源代码文件nvml.py的部分代码,其中指定了在Windows平台下加载nvml.dll文件的路径。根据错误信息,系统找不到指定的模块,可能是由于路径配置错误或者文件缺失导致的。 回答: 根据提供的引用信息,出现的错误是pynvml.NVMLError_InvalidArgument,具体错误信息为Invalid Argument。为了解决这个问题,你可以按照引用中的方法,将nvml.dll文件从C:\Windows\System32复制到C:\Program Files\NVIDIA Corporation\NVSMI文件夹中。这样,程序在执行时就能正确加载所需的库文件。如果问题仍然存在,你可能需要检查路径配置是否正确,并确保所有所需的文件都存在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pynvml.NVMLError_InvalidArgument: Invalid Argument](https://blog.csdn.net/com_fang_bean/article/details/107993279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [pynvml运行错误](https://blog.csdn.net/magicdoubi/article/details/109271102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [解决 pynvml 报错 NVML Shared Library Not Found / WinError 126](https://blog.csdn.net/zywvvd/article/details/109538759)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值