无sudo权限解决ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

在服务器上使用pytorch导入tensorboard时,出现以下错误:

Traceback (most recent call last):
  File "train.py", line 3, in <module>
    from torch.utils.tensorboard import SummaryWriter
  File "/share/home/gpu2003/miniconda3/envs/giraffe/lib/python3.8/site-packages/torch/utils/tensorboard/__init__.py", line 8, in <module>
    from .writer import FileWriter, SummaryWriter  # noqa F401
  File "/share/home/gpu2003/miniconda3/envs/giraffe/lib/python3.8/site-packages/torch/utils/tensorboard/writer.py", line 9, in <module>
    from tensorboard.compat.proto.event_pb2 import SessionLog
  File "/share/home/gpu2003/miniconda3/envs/giraffe/lib/python3.8/site-packages/tensorboard/compat/proto/event_pb2.py", line 8, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/share/home/gpu2003/miniconda3/envs/giraffe/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 47, in <module>
    from google.protobuf.pyext import _message
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /share/home/gpu2003/miniconda3/envs/giraffe/lib/python3.8/site-packages/google/protobuf/pyext/_message.cpython-38-x86_64-linux-gnu.so)

查阅相关资料后发现是/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21'下没GLIBCXX_3.4.21这个版本,简而言之就是/usr/lib64/libstdc++.so.6下的glibc版本太低了。

网上一些方法是修改/usr/lib64/libstdc++.so.6的这个软连接,但是没有sudo权限,无法进行操作。

参考另一篇博客,在用户目录下配置环境变量:

vi ~/.bashrc

# 添加miniconda的路径
export LD_LIBRARY_PATH="/share/home/gpu2003/miniconda3/lib:$LD_LIBRARY_PATH"
# 写入保存
:wq

# 更新环境变量
source ~/.bashrc

添加后发现还是不行,原来是因为该lib目录下,没有libstdc++.so.6,故:

# 在用户目录下寻找文件
find ~ -name "libstdc++.so*"

# 发现当前环境下就有
# /share/home/gpu2003/miniconda3/envs/giraffe/lib/libstdc++.so.6.0.29
# /share/home/gpu2003/miniconda3/envs/giraffe/lib/libstdc++.so
# /share/home/gpu2003/miniconda3/envs/giraffe/lib/libstdc++.so.6

# 前往该路径下查看是否有对应版本
strings /share/home/gpu2003/miniconda3/envs/giraffe/lib/libstdc++.so | grep GLIBCXX
# GLIBCXX_3.4
# GLIBCXX_3.4.1
# GLIBCXX_3.4.2
# GLIBCXX_3.4.3
# GLIBCXX_3.4.4
# GLIBCXX_3.4.5
# GLIBCXX_3.4.6
# GLIBCXX_3.4.7
# GLIBCXX_3.4.8
# GLIBCXX_3.4.9
# GLIBCXX_3.4.10
# GLIBCXX_3.4.11
# GLIBCXX_3.4.12
# GLIBCXX_3.4.13
# GLIBCXX_3.4.14
# GLIBCXX_3.4.15
# GLIBCXX_3.4.16
# GLIBCXX_3.4.17
# GLIBCXX_3.4.18
# GLIBCXX_3.4.19
# GLIBCXX_3.4.20
# GLIBCXX_3.4.21
# GLIBCXX_3.4.22
# GLIBCXX_3.4.23
# GLIBCXX_3.4.24
# GLIBCXX_3.4.25
# GLIBCXX_3.4.26
# GLIBCXX_3.4.27
# GLIBCXX_3.4.28
# GLIBCXX_3.4.29

# 讲该文件移动至目标位置,并添加软连接后,成功解决问题
cp ~/miniconda3/envs/giraffe/lib/libstdc++.so.6.0.29 ~/miniconda3/lib/
cd ~/miniconda3/lib
ln -sf ./libstdc++.so.6.0.29 ./libstdc++.so.6

猜你喜欢

转载自blog.csdn.net/RRRUAAA/article/details/128222798
今日推荐