编译libvirt时出现ImportError: cannot import name 'metadata'错误如何解决
报错根因
本次报错的核心是rst2html5工具的依赖不匹配:你当前安装的rst2html5版本过高,依赖仅Python 3.8及以上版本内置的importlib.metadata模块,而你环境中rst2html5绑定的是Python 3.6运行环境,该版本没有内置这个模块。你之前升级Python 3.8未生效的原因大概率是rst2html5还是基于旧的Python 3.6环境安装的,没有和新的Python 3.8版本绑定;而安装指定版本jsonschema的方案和本次报错无关,无法解决问题。
解决方案
方案1:关闭文档编译(优先推荐)
如果不需要编译生成libvirt官方文档,可在meson配置阶段直接关闭文档生成选项,跳过依赖检查:
meson setup build -Ddocs=disabled
配置完成后再执行ninja -C build即可正常编译,不会触发文档生成相关的流程。
方案2:修复rst2html5依赖(需要生成文档时使用)
- 先卸载当前已安装的高版本rst2html5
pip3 uninstall rst2html5 -y
- 安装适配Python 3.6的兼容组件和低版本rst2html5
pip3 install importlib-metadata rst2html5==1.9.4
- 若你已经升级到Python 3.8,可直接用对应版本的pip重装rst2html5适配新环境
pip3.8 install rst2html5
修复完成后重新执行ninja编译即可。
内容的提问来源于stack exchange,提问作者user17057376
相关产品推荐
相关产品推荐

