ImportError ohne Sudo-Berechtigung lösen: /lib64/libstdc++.so.6: Version „GLIBCXX_3.4.21“ nicht gefunden

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

おすすめ

転載: blog.csdn.net/RRRUAAA/article/details/128222798