ImportError: libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

问题描述:

在导入torch的某些模块时报错如下:

Traceback (most recent call last):
  File "train_net.py", line 29, in <module>
    from torch.utils.tensorboard import SummaryWriter
  File "/home/user/.conda/envs/xxx/lib/python3.10/site-packages/torch/utils/tensorboard/__init__.py", line 12, in <module>
    from .writer import FileWriter, SummaryWriter  # noqa: F401
  File "/home/user/.conda/envs/xxx/lib/python3.10/site-packages/torch/utils/tensorboard/writer.py", line 10, in <module>
    from tensorboard.compat.proto import event_pb2
  File "/home/user/.conda/envs/xxx/lib/python3.10/site-packages/tensorboard/compat/proto/event_pb2.py", line 6, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/home/user/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/descriptor.py", line 47, in <module>
    from google.protobuf.pyext import _message
ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/user/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/pyext/_message.cpython-310-x86_64-linux-gnu.so)

原因分析:

提示错误gcc 版本中的so文件与anaconda 中的包冲突1,一些依赖包的版本可能出了问题,导致不匹配2


解决方案:

第一次尝试(碰巧)

很多网上的方法都是手动配置链接3,但是并没有真正的解决问题,也没有必要。需要根据报错提示中涉及到的包具体问题具体分析。

譬如在笔者遇到的问题中,涉及到的包是 tensorboardgoogle,笔者在安装 tensorboardtensorboardX时采用的安装命令是 conda install tensorboard tensorboardX,可能存在着pip和conda安装的包有冲突,于是笔者采用:

pip uninstall tensorboard tensorboardX
pip install tensorboard tensorboardX

成功结果问题,不再报错。(注:用 conda uninstall 可能会卸载更多的相关包)

某些网友出现了“gcc 版本中的so文件与anaconda 中scipy冲突”、 pandas 冲突等2,也均是通过重新安装相应的包解决问题。

第二次尝试

再次遭遇前述问题,使用前面的方法,发现前面的方法不奏效。还是根据哪个包冲突就分析重装哪个包的原则进行尝试。这里涉及到的是 protobuf, 在 pip uninstall protobuf 时发现,部分位置需要手动删除,尤其是冲突的 protobuf/pyext/_message.cpython-310-x86_64-linux-gnu.so 位置。

Found existing installation: protobuf 5.27.1
Uninstalling protobuf-5.27.1:
  Would remove:
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/_upb/_message.abi3.so
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/*
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/protobuf-5.27.1.dist-info/*
  Would not remove (might be manually added):
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/internal/_api_implementation.cpython-310-x86_64-linux-gnu.so
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/pyext/_message.cpython-310-x86_64-linux-gnu.so
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/util/json_format_pb2.py
    /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/google/protobuf/util/json_format_proto3_pb2.py
Proceed (Y/n)? y
  Successfully uninstalled protobuf-5.27.1

手动将 google/protobuf 下全部删除,再重新安装 pip install protobuf==4.25.3,问题得到解决。

其他情况

遇到报错

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/kiwisolver/_cext.cpython-310-x86_64-linux-gnu.so)

用 pip 重装 kiwisolver 问题解决。

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/scipy/spatial/_ckdtree.cpython-310-x86_64-linux-gnu.so)

用 pip 重装 scipy 问题解决。

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/xxx/.conda/envs/xxx/lib/python3.10/site-packages/sklearn/metrics/_pairwise_distances_reduction/_base.cpython-310-x86_64-linux-gnu.so)

用 pip 重装 scikit-learn 问题解决。


  1. 解决 ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29’ not found ↩︎

  2. 正确解决 libstdc++.so.6: `GLIBCXX_3.4.29’ not found ↩︎ ↩︎

  3. 丝滑解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found问题 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值