【问题标题】:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found required by TensorFlow/usr/lib/x86_64-linux-gnu/libstdc++.so.6:TensorFlow 不需要版本“GLIBCXX_3.4.21”
【发布时间】:2019-07-23 16:45:09
【问题描述】:

我正在尝试使用机器学习库在 debian 服务器上部署 flask 应用程序,到目前为止,我使用大多数 ML 库进行了管理,但出现此错误,谢谢到 TensorFlow,我对此进行了很多研究,但没有适合我的解决方案。

PS : 我正在为我的应用程序使用 3.7 python venv

ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: 找不到版本“GLIBCXX_3.4.21”(/flask/wstest/lib/python3.7/site-packages/tensorflow/ 需要python/_pywrap_tensorflow_internal.so) 3 月 1 日 15:32:11 django gunicorn[8803]:无法加载原生 TensorFlow 运行时。

我显然错过了 GLIBCXX 3.4.21,因为strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX3.4.20 显示为最新版本。

试过这个修复add-apt-repository ppa:ubuntu-toolchain-r/test 给出这个: result of the toolchain add attempt

试过apt-get update,搞定了

W: 无法获取http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/dists/jessie/main/binary-amd64/Packages 404 Not Found

还尝试更新libgcc和libstdc++6,说我有最新版本。

编辑:我怀疑 Debian 8 Jessie 不支持比 3.4.20 更高的 glibcxx 版本。

【问题讨论】:

  • 你使用的是 TF 1.13.1 吗?
  • 我尝试了 TF 1.13.1 和 1.13.0,无法安装旧版本。

标签: python tensorflow debian libstdc++


【解决方案1】:

所以,我刚刚测试了 Stretch 并且效果很好。在这种情况下,问题与操作系统有关 Debian 8 Jessie ,它无法处理高于 3.4.20 的 glibcxxx 版本。

PS : StretchDebian 9 的发行版名称

【讨论】:

    【解决方案2】:

    这是 Ubuntu 16.04 中此问题的解决方案

    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install gcc-4.9
    sudo apt-get upgrade libstdc++6
    

    您可以像这样检查是否获得了 GLIBCXX 所需的版本:

    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
    

    【讨论】:

    • 这有帮助。谢谢。
    【解决方案3】:

    如果您使用 Anaconda/Miniconda,您还可以通过设置 LD_LIBRARY_PATH 环境变量让您的操作系统使用安装时提供的 libstdc++.so.6。假设您在 /home/whatever/miniconda3 中安装了 Miniconda,并且您正在使用 bash。然后将此添加到您的~/.bashrc

    export LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/:/home/whatever/miniconda3/lib
    

    export LD_LIBRARY_PATH=/home/whatever/miniconda3/lib
    

    source ~/.bashrc 或重新启动您的 shell,您应该一切顺利。

    另请参阅:https://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.how_to_set_pathsHow to update libstdc++.so.6 or change the file to use on Tensorflow, Python

    【讨论】:

    • 这个答案帮助解决了我的问题。但是,我相信应该导出 LD_LIBRARY_PATH 的方式是这样的:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:... 就像在这个answer 中显示的一样@
    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-02-13
    相关资源
    最近更新 更多