Beim Importieren von Tensorboard mit Pytorch auf dem Server erhalte ich die folgende Fehlermeldung:
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)
Nachdem ich die relevanten Informationen überprüft hatte, stellte ich fest, dass /usr/lib64/libstdc++.so.6: Version „GLIBCXX_3.4.21“ nicht die Version GLIBCXX_3.4.21 hat. Kurz gesagt, es handelt sich um die Glibc-Version unter /usr/lib64/libstdc++ .so.6 zu niedrig.
Einige Methoden im Internet dienen dazu, die Soft-Verbindung von /usr/lib64/libstdc++.so.6 zu ändern, aber ohne Sudo-Berechtigungen kann der Vorgang nicht ausgeführt werden.
Informationen zum Konfigurieren von Umgebungsvariablen im Benutzerverzeichnis finden Sie in einem anderen Blog:
vi ~/.bashrc
# 添加miniconda的路径
export LD_LIBRARY_PATH="/share/home/gpu2003/miniconda3/lib:$LD_LIBRARY_PATH"
# 写入保存
:wq
# 更新环境变量
source ~/.bashrc
Nachdem ich es hinzugefügt hatte, stellte ich fest, dass es immer noch nicht funktionierte. Es stellte sich heraus, dass es keine libstdc++.so.6 im lib-Verzeichnis gab, also:
# 在用户目录下寻找文件
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