大纲
本文记录在环境配置好后,在 import torch 过程中报了 异常
ImportError: /home/Coding/Envs/envs/only_test/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12
原因剖析
出现此情况的原因主要是pytorch
依赖没有正确链接,使用命令
ldd /home/.venv/lib/python3.10/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12
明显看出 libnvJitLink.so.12 使用的是系统 nvidia 驱动自带的链接文件,由于程序安装过程中,在环境中下载了虚拟环境适配的 nvidia 相关文件,所以此处在 import torch 时 出现了import error 主要是链接文件出了问题。
修改链接文件
1 找到虚拟环境对应的 nvidia 文件夹
cd /home/condaPath/envs/envName/lib/python3.10/site-packages/nvidia
这里主要关注带箭头的两个文件夹
其中 nvjitlink 文件夹中为上述的 libnvJitLink.so.12 所在目录
cd nvjitlink/
cd lib
为安全起见 将在 nvjitlink 中的 libnvJitLink.so.12 链接源文件 建立软连接,指向 cusparse 文件夹 ln -s 源 目标
ln -s /home/condaPath/envs/envName/lib/python3.10/site-packages/nvidia/nvjitlink/lib/libnvJitLink.so.12 /home/condaPath/envs/envName/lib/python3.10/site-packages/nvidia/cusparse/lib/libnvJitLink.so.12
2 然后将该软连接建立环境的动态链接
export LD_LIBRARY_PATH=/home/condaPath/envs/envName/lib/python3.10/site-packages/nvidia/cusparse/lib:$LD_LIBRARY_PATH
上述操作完成,该问题即可解决。可以使用 import torch 做测试。