Anaconda ImportError:/usr/lib64/libstdc .so.6:未找到版本“GLIBCXX_3.4.21”

新手上路,请多包涵

当我尝试在 conda 环境中运行 Python 脚本时出现以下导入错误

(squad) azada@scholar-fe00:~/Desktop/Toy-Problem-Team-2 $ python3 train.py
Traceback (most recent call last):
  File "train.py", line 21, in <module>
    from tensorboardX import SummaryWriter
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/__init__.py", line 5, in <module>
    from .torchvis import TorchVis
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/torchvis.py", line 11, in <module>
    from .writer import SummaryWriter
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/writer.py", line 15, in <module>
    from .event_file_writer import EventFileWriter
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/event_file_writer.py", line 28, in <module>
    from .proto import event_pb2
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/tensorboardX/proto/event_pb2.py", line 7, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/google/protobuf/descriptor.py", line 47, in <module>
    from google.protobuf.pyext import _message
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/azada/miniconda3/envs/squad/lib/python3.6/site-packages/google/protobuf/pyext/_message.cpython-36m-x86_64-linux-gnu.so)

编写 strings /usr/lib64/libstdc++.so.6 | 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_DEBUG_MESSAGE_LENGTH

如您所见,所需的 libgcc 版本不存在。但我无法理解为什么 python 在 /usr 目录中寻找 GLIBCXX

在我的 anaconda 环境的 libstdc++.so.6 上运行相同的命令表明文件中存在所需的版本。

我正在使用我大学的计算集群,所以我没有管理员权限。

有什么方法可以让 Python 使用我的 conda 环境的 libstdc++ 而不是 /usr 目录中的那个?

原文由 Aditya Azad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

我花了一天的时间来解决这个问题,在我的研究型大学的计算集群上工作时遇到了与你相同的问题,我终于找到了正确的 Stack Overflow 线程。不幸的是,上述答案都不起作用,但我可以 非常 自信地说,即使错误回溯的来源不同,链接线程中的细节也应该可以解决您的问题。

总而言之,您需要将 --- 中的 anaconda lib 文件夹的路径添加到 LD_LIBRARY_PATH

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/path/to/conda/env/lib

就我而言,我只是做了:

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/anaconda3/lib

……它就像一个魅力!

原文由 nathan liang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏