You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用webbrowser报GLIBCXX_3.4.29缺失错误的排查求助

解决Python调用webbrowser.open时GLIBCXX_3.4.29未找到的问题

问题场景

运行以下Python脚本时:

import webbrowser
webbrowser.open(url)

无论是VSCode还是终端环境,都会抛出相同的运行时警告:

/snap/core20/current/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libproxy.so.1) Failed to load module: /home/andrea/snap/code/common/.cache/gio-modules/libgiolibproxy.so

已通过命令strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX确认系统层面存在GLIBCXX_3.4.29版本,且已升级至最新库,但问题仍未解决。


解决方案建议

1. 临时指定正确的库路径运行脚本

问题根源是snap环境优先加载了旧版本的libstdc++,可在运行脚本时手动指定系统新库路径:

LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu python your_script.py

若使用PyEnv管理Python,需指向PyEnv的Python可执行文件:

LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu ~/.pyenv/shims/python your_script.py

2. 永久设置LD_LIBRARY_PATH(当前用户)

编辑shell配置文件(~/.bashrc或~/.zshrc,依使用的shell而定),添加:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

保存后执行source ~/.bashrc(或对应配置文件)使设置生效,后续运行Python脚本会优先加载系统新库。

3. 重新编译PyEnv下的Python

若怀疑PyEnv编译的Python未链接新libstdc++,可重新编译:

  • 先卸载当前Python版本(示例为3.10.0):
pyenv uninstall 3.10.0
  • 安装编译依赖(以Ubuntu为例):
sudo apt-get update && sudo apt-get install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
  • 重新安装编译Python:
pyenv install 3.10.0

编译过程会自动链接系统当前的最新库文件。

4. 绕过webbrowser库直接调用浏览器

若以上方法无效,可直接调用系统浏览器命令打开链接,规避webbrowser库的依赖问题:

import subprocess

# 调用Chrome
subprocess.run(["google-chrome", url])
# 调用Firefox
# subprocess.run(["firefox", url])
# 调用系统默认浏览器(Linux通用)
# subprocess.run(["xdg-open", url])

内容的提问来源于stack exchange,提问作者Andrea Moro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:30:19