0%

import pytorch 报错 cannot-open-shared-object-file

前言

最近在水 https://zh-v2.d2l.ai/chapter_preliminaries/ndarray.html , Dive into Deep Learning,感觉是目前最好的中文开源深度学习书籍了(花书纸质版看着就很头大,而且没有开放的中文PDF)。看到 2.1 的时候终于开始实操代码,提供了 MXNET,PyTorch,TensorFlow 三种版本的示例代码,好强。最后选择了 PyTorch,感觉似乎科研领域用的较多一点。然后在 import torch 时候就出了问题……解决方案是设置软连接,具体见正文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import torch
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-1-eb42ca6e4af3> in <module>
----> 1 import torch

~/miniconda3/envs/d2l/lib/python3.8/site-packages/torch/__init__.py in <module>
194 if USE_GLOBAL_DEPS:
195 _load_global_deps()
--> 196 from torch._C import *
197
198 # Appease the type checker; ordinarily this binding is inserted by the

ImportError: libtinfo.so.5: cannot open shared object file: No such file or directory

正文

参考了 https://blog.csdn.net/qq_33317126/article/details/108388332。

主要原因是 Ubuntu 升级后,系统动态库版本更新更名。PyTorch 在引入时调用动态库找不到对应的库进而报错。解决方案是设置一个软连接,让系统在查找低版本动态库时,自动打开高版本动态库。操作如下。

首先输入下面命令查询当前动态库版本。根据找不到的动态库名自行更改。

1
2
$ ls /lib/x86_64-linux-gnu/libtinfo.so.*
/lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.6.2

可以看到我们 Ubuntu 20.04 的系统上只有 6 这个版本,而 python 在查找 5 当然找不到。我们设置一个 5 到 6 的软连接即可。

1
sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5

之后 PyTorch 就可以正常 import 了。