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

52 篇文章 2 订阅
31 篇文章 0 订阅

在这里插入图片描述

背景:在下载 svgrender 库(https://pytorch-svgrender.readthedocs.io/en/latest/install.html)的最后一步 python setup.py install 时,遇到以下报错。

报错:

Traceback (most recent call last):
  File "/path/to/svgrender/diffvg/setup.py", line 76, in <module>
    import torch
  File "/path/to/miniconda3/envs/svgrender/lib/python3.10/site-packages/torch/__init__.py", line 235, in <module>
    from torch._C import *  # noqa: F403
ImportError: libcupti.so.12: cannot open shared object file: No such file or directory

方法1:修改 ~/.bashrc (本文情况下试了无效❌)

这个问题可能是缺少 CUDA Toolkit 的 libcupti 库或者找不到 新建 conda 环境中找不到 libcupti.so.12 导致的。

要解决这个问题,可以尝试以下几个步骤:

  1. 确认CUDA Toolkit是否已正确安装并配置。可以通过运行以下命令来检查CUDA版本:nvcc --version
  2. 确认libcupti…so.12是否存在于系统中。可以使用以下命令在系统中查找该库:sudo find -name "libcupti.so.12"

2.1 如果找不到该库,则需要重新安装CUDA Toolkit.。

2.2 如果找到了该库,将其路径添加到 LD LIBRARY PATH环境变量中,具体方法如下:

(svgrender) usrname:~/path/to/project$ sudo find / -name "libcupti.so.12"
/path/to/miniconda3/envs/textdiffuser2/lib/python3.8/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/img_var/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/deploy/lib/libcupti.so.12
/path/to/miniconda3/envs/InstantStyle/lib/python3.12/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/ccsr/lib/libcupti.so.12
/path/to/miniconda3/envs/ccsr/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/blip/lib/python3.12/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/.local/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/usr/local/cuda-12.2/extras/CUPTI/lib64/libcupti.so.12
...(后面的不太重要)

(1)分析问题:通过 sudo find 找到设备的其他 conda 环境(如 textdiffuser2,img_var 等)都能够找到 libcupti.so.12,
于是在当前环境(svgrender)中设置环境变量。

(2)在当前环境(svgrender)中 nano ~/.bashrc,拖到最后加入 export LD_LIBRARY_PATH=/path/to/libcupti.so.12:$LD_LIBRARY_PATH

其中的 /path/to/libcupti.so.12 在我的设备上是 /path/to/.local/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/usr/local/cuda-12.2/extras/CUPTI/lib64/libcupti.so.12 ,二者都尝试了,依然无效😭

方法2:软连接 (本文情况下有效✅)

进一步分析通过 sudo find 得到的信息

/path/to/miniconda3/envs/**textdiffuser2**/lib/python3.8/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/**img_var**/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/**deploy**/lib/libcupti.so.12
/path/to/miniconda3/envs/**InstantStyle**/lib/python3.12/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/**ccsr**/lib/libcupti.so.12
/path/to/miniconda3/envs/**ccsr**/lib/python3.9/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/miniconda3/envs/**blip**/lib/python3.12/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/path/to/.local/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/usr/local/cuda-12.2/extras/CUPTI/lib64/libcupti.so.12

说明我们如果想要在 svgrender 环境中跑通,其实需要在 /path/to/miniconda3/envs/svgrender 中增加一个 /lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12 (注意环境中的 python 版本正确),于是:

  1. 先创建一个这样的路径
mkdir -p /path/to/miniconda3/envs/svgrender/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/
  1. 将其软连接到对应 python 版本的 libcupti.so.12 路径
ln -s /path/to/.local/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12 /path/to/miniconda3/envs/svgrender/lib/python3.10/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12

完成后报错消息,成功跑通远来的代码!🎉

参考博客:
[1] https://wenku.csdn.net/answer/6msorybs5f
[2] https://stackoverflow.com/questions/65933271/could-not-load-dynamic-library-libcupti-so-11-0-dlerror-libcupti-so-11-0-ca

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值