tensorflow Anaconda导入错误:/usr/lib 64/libstdc++中指定的文件类型,找不到'GLIBCXX_3.4.21'版本

9nvpjoqh  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(220)

尝试在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目录中的libstdc++

b4wnujal

b4wnujal1#

我花了一天的时间来解决这个问题,在我的研究型大学的计算集群上遇到了和你一样的问题,我终于找到了正确的Stack Overflow thread。不幸的是,上面的答案都不管用。但我可以说非常即使错误回溯的来源不同,链接执行绪中的详细数据也应该能解决您的问题,这是非常有信心的。
总之,您需要将anacondalib文件夹的路径添加到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

......而且效果很好!

bkhjykvo

bkhjykvo2#

通过降级到libgcc==5.2.0解决此问题
最初,尝试使用pip进行安装,但如果出现以下错误:无法下载并编译igraph的C核心..请通过conda安装

gstyhher

gstyhher3#

这也值得一试,因为它最终为我工作:

conda install -c conda-forge libstdcxx-ng

说明:我在尝试import tensorflow as tf时遇到此错误:

ImportError: /opt/conda/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)

而且我已经安装了libgcc-ng。同样值得注意的是,我已经添加了conda库路径和系统库路径,但这对我不起作用。所以,YMMV。

30byixjq

30byixjq4#

运行这段代码,您的问题应该得到解决,

conda install -c conda-forge gcc

相关问题