You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Beeware Toga WebView组件TypeError问题求助(Ubuntu 19.10环境)

解决Beeware Toga WebView在Ubuntu 19.10下打包运行的依赖错误

从你给出的错误信息来看,核心问题是打包后的运行环境无法正确找到兼容的WebKit2GTK和Cairo库版本——虽然本地虚拟环境能正常运行,但Briefcase打包时的隔离环境和系统库之间出现了版本不匹配的问题。下面是几个针对性的解决思路:

1. 安装完整的系统级WebKit2GTK依赖

Ubuntu 19.10的系统库版本较老,可能缺少WebView运行所需的完整依赖包。打开终端执行以下命令安装必要的系统库:

sudo apt update && sudo apt install libwebkit2gtk-4.0-dev libcairo2-dev libgirepository1.0-dev

这些包会提供WebKit2GTK运行所需的完整库文件,以及Cairo的开发头文件,修复cairo_font_options_set_variations符号缺失的问题。

2. 重新构建虚拟环境的依赖

本地虚拟环境能运行,但打包后出错,可能是因为依赖包是针对系统库编译的,但打包时没有正确关联。尝试删除虚拟环境后重新创建并安装依赖:

# 删除旧虚拟环境(假设你的虚拟环境叫venv)
rm -rf venv
python3 -m venv venv
source venv/bin/activate
# 重新安装Beeware和Toga依赖
pip install briefcase toga-gtk

确保所有依赖都是针对当前系统的库重新编译的,避免打包时出现依赖不兼容。

3. 调整Briefcase的打包配置

Briefcase的打包过程可能没有自动包含系统级的WebKit依赖。你可以在项目的pyproject.toml中添加系统依赖声明,让Briefcase在打包时处理这些依赖:
[tool.briefcase.app.<your-app-name>]下添加:

system_requires = [
    "libwebkit2gtk-4.0.so.37",
    "libcairo.so.2"
]

然后重新执行briefcase buildbriefcase run -u,让Briefcase尝试将这些系统库包含到打包环境中。

4. 考虑升级系统到LTS版本

Ubuntu 19.10已经停止官方支持,系统库不再更新,后续可能会遇到更多依赖兼容问题。如果可行的话,升级到Ubuntu 20.04 LTS(长期支持版本),新版本的系统库会更完善,能更好地兼容Beeware的最新依赖。

另外,你提到降级pycairo到1.11.1能在虚拟环境运行,但打包后不行,本质还是因为打包环境的系统库和pycairo版本不匹配,上面的步骤应该能解决这个关联问题。

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

火山引擎 最新活动