ImportError: libcupti.so.11.7: cannot open shared object file: No such file or directory报错解决过程

前言

又是一篇报错解决思路,记录下解决过程,如有错误请在评论区指正,希望能对读者有所帮助。这篇跟上次文章的错误很像,还是环境没找到库。

正文

今天打算复现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 库所需的共享库文件。

  1. export
    export 是一个 shell 命令,用于将环境变量设置为当前 shell 会话中的全局变量,使其可用于所有后续的命令和子进程。

  2. LD_LIBRARY_PATH
    这是一个环境变量,告诉系统应该从哪些目录中查找共享库(.so 文件)。当系统执行需要加载共享库的程序时,会按照 LD_LIBRARY_PATH 中列出的路径进行查找。

  3. /usr/local/cuda-11.7/extras/CUPTI/lib64
    这是要添加到 LD_LIBRARY_PATH 中的新目录路径,它指向 CUPTI(CUDA Profiling Tools Interface) 的库文件所在的目录。这个库通常用于性能分析或调试 CUDA 程序。

  4. $LD_LIBRARY_PATH
    这个符号 $LD_LIBRARY_PATH 引用了当前已经存在的 LD_LIBRARY_PATH 环境变量的值。通过在路径列表后追加这个引用,确保新路径被添加到原有路径的基础上,而不是覆盖它。

  5. : (冒号):
    LD_LIBRARY_PATH 中,多个路径使用冒号 : 分隔。通过在 /usr/local/cuda-11.7/extras/CUPTI/lib64 后面追加现有的 LD_LIBRARY_PATH,可以同时包含多个共享库路径。

至此,问题解决。

参考:

【原创解决方案】ImportError: libcupti.so.12: cannot open shared object file: No such file or directory-CSDN博客

解决 ImportError: libcupti.so.11.7: cannot open shared object file: No such file or directory 错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shinone+const

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值