前言
又是一篇报错解决思路,记录下解决过程,如有错误请在评论区指正,希望能对读者有所帮助。这篇跟上次文章的错误很像,还是环境没找到库。
正文
今天打算复现APT的代码,遇到了这样的报错:
ImportError: libcupti.so.11.7: cannot open shared object file: No such file or directory
查了chatGPT,给我的回答中可能的原因有:
-
CUDA 安装不完整 或 环境变量未正确设置,导致 PyTorch 无法找到
libcupti.so.11.7
。 -
CUDA 版本不匹配:PyTorch 安装的 CUDA 版本与系统中安装的 CUDA 版本不一致。
-
未正确安装
libcupti
库
感觉应该是原因一,遂排查
①先确认 CUDA 是否正确安装
nvcc --version
输出当前安装的 CUDA 版本,确保与 PyTorch 环境兼容,笔者没问题,过。
②检查 libcupti
库的安装位置
#前两条命令是安装locate命令,如果已经安装,则跳过 sudo apt-get install mlocate sudo updatedb #第三条命令是手动查找 libcupti.so 文件的位置 locate libcupti.so
locate libcupti.so
会返回路径中所以带有 libcupti.so
的路径,找到“/usr/local/cuda-11.7”开头、结尾是“libcupti.so.11.7”的,
我是 /usr/local/cuda-11.7/extras/CUPTI/lib64/libcupti.so.11.7
。这个就是libcupti.so.11.7的路径,复制保存。
这说明我环境有安装,但是运行环境没找到,
③检查环境变量
确保环境变量中包含了动态链接库文件的路径。在终端或命令提示符中运行以下命令,检查 LD_LIBRARY_PATH 环境变量的设置
echo $LD_LIBRARY_PATH
关于这条命令chatGPT的说明:
echo $LD_LIBRARY_PATH
是一个用于显示当前环境变量 c的命令。LD_LIBRARY_PATH
是一个环境变量,告诉系统在运行程序时从哪些路径查找共享库(shared libraries),特别是 .so
文件(动态库)
结果输入命令行返回为空,这说明确实没设置好环境变量
④设置环境变量
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/extras/CUPTI/lib64:$LD_LIBRARY_PATH
关于这条命令的解释:
LD_LIBRARY_PATH
是一个环境变量,系统在运行程序时会去其包含的目录路径查找共享库,每个路径之间由冒号 :
分隔,因为我的环境libcupti.so.11.7在“/usr/local/cuda-11.7/extras/CUPTI/lib64/”文件夹下,所以会有:前这一串路径;
在变量名前加 $
, 表示变量的值,运行程序也可以在$LD_LIBRARY_PATH值的路径下查找共享库。
chatGPT更详细的解释
这条命令 export LD_LIBRARY_PATH=/usr/local/cuda-11.7/extras/CUPTI/lib64:$LD_LIBRARY_PATH
用来更新系统的 LD_LIBRARY_PATH
环境变量,确保系统能够找到 CUPTI
库所需的共享库文件。
-
export
:export
是一个 shell 命令,用于将环境变量设置为当前 shell 会话中的全局变量,使其可用于所有后续的命令和子进程。 -
LD_LIBRARY_PATH
:
这是一个环境变量,告诉系统应该从哪些目录中查找共享库(.so
文件)。当系统执行需要加载共享库的程序时,会按照LD_LIBRARY_PATH
中列出的路径进行查找。 -
/usr/local/cuda-11.7/extras/CUPTI/lib64
:
这是要添加到LD_LIBRARY_PATH
中的新目录路径,它指向 CUPTI(CUDA Profiling Tools Interface) 的库文件所在的目录。这个库通常用于性能分析或调试 CUDA 程序。 -
$LD_LIBRARY_PATH
:
这个符号$LD_LIBRARY_PATH
引用了当前已经存在的LD_LIBRARY_PATH
环境变量的值。通过在路径列表后追加这个引用,确保新路径被添加到原有路径的基础上,而不是覆盖它。 -
:
(冒号):
在LD_LIBRARY_PATH
中,多个路径使用冒号:
分隔。通过在/usr/local/cuda-11.7/extras/CUPTI/lib64
后面追加现有的LD_LIBRARY_PATH
,可以同时包含多个共享库路径。
至此,问题解决。
参考:
解决 ImportError: libcupti.so.11.7: cannot open shared object file: No such file or directory 错误