【问题标题】:"ImportError: cannot import name 'metadata'" when compile libvirt编译 libvirt 时出现“ImportError: cannot import name 'metadata'”
【发布时间】:2021-10-02 09:47:48
【问题描述】:

当我从github编译libvirt代码时,出现如下错误:

[395/1071] Generating 'docs/committer-guidelines.html.p/committer-guidelines.html.in'.
FAILED: docs/committer-guidelines.html.p/committer-guidelines.html.in
/usr/bin/meson --internal exe --capture docs/committer-guidelines.html.p/committer-guidelines.html.in -- /usr/local/bin/rst2html5 --stylesheet= --strict ../docs/committer-guidelines.rst
Traceback (most recent call last):
  File "/usr/local/bin/rst2html5", line 7, in <module>
    from rst2html5_ import main
  File "/usr/local/lib/python3.6/site-packages/rst2html5_.py", line 17, in <module>
    from rst2html5 import HTML5Writer  # noqa E402
  File "/usr/local/lib/python3.6/site-packages/rst2html5/__init__.py", line 4, in <module>
    from importlib import metadata
ImportError: cannot import name 'metadata'
[422/1071] Compiling C object src/conf/libvirt_conf.a.p/domain_conf.c.o
ninja: build stopped: subcommand failed.

我尝试了一些方法,但都没有解决问题

  1. pipenv install jsonschema==3.0.2 from this

  2. 将 python 版本更新到 3.8

编译环境: centos 8; linux 5.14.7;蟒蛇3.6.8; libvirt 主目录

【问题讨论】:

    标签: python linux libvirt


    【解决方案1】:

    你可以试试这个方法: 在 /usr/local/lib/python3.6/site-packages/rst2html5/init.py 的文件中 修改为:

    try:
        from importlib import metadata
    except ImportError:
        # Running on pre-3.8 Python; use importlib-metadata package
        import importlib_metadata as metadata  # type: ignore
    

    https://gitlab.com/meltano/sdk/-/issues/58

    【讨论】:

    • 谢谢,这可能是个好方法,但是我没有环境重现问题。
    【解决方案2】:

    尝试更新您的 rst2html5 包:

    pip install rst2html5
    

    【讨论】:

    • 您好,反馈晚了,重新安装整个python环境后问题解决了,可能是某个组件版本不对应的原因。我之前安装过rst2html5,但是还是不行,不过你的想法是对的,是某个组件有问题。非常感谢。
    猜你喜欢
    • 2018-10-27
    • 2015-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    相关资源
    最近更新 更多