在服务器上使用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