使用目标检测API时遇cudart64_90.dll未找到错误的求助
cudart64_90.dll的问题解答 首先回答你的第一个问题:cudart64_90.dll的正确位置应该是在CUDA 9.0安装目录的bin文件夹下,默认路径一般是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin
如果你的DLL文件确实在这个路径里,那位置是完全正确的;但如果它在其他子目录(比如lib、samples或者其他非bin文件夹),那位置就不对了——TensorFlow只会扫描bin目录下的CUDA相关DLL文件。
接下来分析明明文件存在却报错的常见原因:
系统环境变量
%PATH%未包含该DLL的路径:
CUDA安装程序通常会自动把bin目录添加到系统PATH,但偶尔会出现安装异常、手动修改PATH时误删该路径,或者路径被放到其他CUDA版本路径之后的情况。TensorFlow会按PATH里的顺序查找DLL,如果先找到其他版本的CUDA文件,就会跳过9.0的路径。环境变量修改后未生效:
如果你刚添加完PATH就直接打开Jupyter Notebook,新的环境变量还没加载到当前进程里。这种情况下,需要关闭所有打开的终端、Jupyter窗口,甚至重启电脑,才能让新的PATH生效。多CUDA版本冲突:
如果你之前安装过其他版本的CUDA(比如10.x、11.x),这些版本的bin路径可能也在PATH里,且优先级比9.0的高。TensorFlow会优先加载高版本的CUDA文件,导致找不到9.0的cudart64_90.dll。Jupyter虚拟环境的PATH覆盖问题:
如果你用Conda或其他虚拟环境,虚拟环境的PATH可能会覆盖系统PATH,导致CUDA 9.0的bin路径没有被包含进去。DLL文件未注册或损坏:
极少数情况下,即使文件存在,也可能因为未注册或文件损坏无法被识别。你可以尝试以管理员身份打开命令提示符,执行regsvr32 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\cudart64_90.dll"来注册该DLL(如果提示“模块已加载但找不到入口点”,说明这个DLL不需要注册,忽略即可)。
解决步骤建议:
- 确认
cudart64_90.dll确实在...\CUDA\v9.0\bin路径下; - 打开系统环境变量设置:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的
PATH中检查是否包含上述bin路径,没有的话添加进去,并且把它移到其他CUDA版本路径的上方(避免冲突); - 关闭所有Jupyter Notebook窗口和终端,重启电脑后再重新运行程序;
- 如果用了虚拟环境,激活环境后在命令行输入
echo %PATH%(Windows),确认CUDA 9.0的bin路径是否在列表中,若没有可以手动在虚拟环境的启动脚本中添加; - 若以上都无效,尝试卸载CUDA 9.0,重新下载官方安装包,选择自定义安装确保所有核心组件都被安装,安装时勾选“添加到系统PATH”选项。
内容的提问来源于stack exchange,提问作者Jorge

