现象

在编译OpenHarmony 3.1的时候,使用hb进行源码编译的时候出现以下错误(基于python3.10):

$hb set
[OHOS ERROR] Traceback (most recent call last):
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/hb/__main__.py", line 84, in main
[OHOS ERROR]     status = args.command(args)
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/set/set.py", line 45, in exec_command
[OHOS ERROR]     return set_product() == 0
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/set/set.py", line 62, in set_product
[OHOS ERROR]     product_info = Product.product_menuconfig()
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/common/product.py", line 199, in product_menuconfig
[OHOS ERROR]     product = menu.list_promt('product', 'Which product do you need?',
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/cts/menuconfig.py", line 34, in list_promt
[OHOS ERROR]     return self._promt(questions, **kwargs)
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/cts/menuconfig.py", line 25, in _promt
[OHOS ERROR]     prompt = importlib.import_module('hb_internal.cts.prompt')
[OHOS ERROR]   File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
[OHOS ERROR]     return _bootstrap._gcd_import(name[level:], package, level)
[OHOS ERROR]   File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
[OHOS ERROR]   File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
[OHOS ERROR]   File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
[OHOS ERROR]   File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
[OHOS ERROR]   File "<frozen importlib._bootstrap_external>", line 883, in exec_module
[OHOS ERROR]   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
[OHOS ERROR]   File "/mnt/d/Projects/code-v3.1-Release/OpenHarmony/build/lite/hb_internal/cts/prompt.py", line 21, in <module>
[OHOS ERROR]     from prompt_toolkit.shortcuts import run_application
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/__init__.py", line 16, in <module>
[OHOS ERROR]     from .interface import CommandLineInterface
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/interface.py", line 19, in <module>
[OHOS ERROR]     from .application import Application, AbortAction
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/application.py", line 8, in <module>
[OHOS ERROR]     from .key_binding.bindings.basic import load_basic_bindings
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/basic.py", line 9, in <module>
[OHOS ERROR]     from prompt_toolkit.renderer import HeightIsUnknownError
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/renderer.py", line 11, in <module>
[OHOS ERROR]     from prompt_toolkit.styles import Style
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/styles/__init__.py", line 8, in <module>
[OHOS ERROR]     from .from_dict import *
[OHOS ERROR]   File "/home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py", line 9, in <module>
[OHOS ERROR]     from collections import Mapping
[OHOS ERROR] ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
[OHOS ERROR] Unhandled error: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py

原因

由以上log分析其主要原因是pip3下载的库有代码不兼容的问题,根据错误把相关不兼容库的代码纠正过来即可:

nano /home/winter/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py
"""
Tool for creating styles from a dictionary.

This is very similar to the Pygments style dictionary, with some additions:
- Support for reverse and blink.
- Support for ANSI color names. (These will map directly to the 16 terminal
  colors.)
"""
# from collections import Mapping
from collections.abc import Mapping

Ref

https://stackoverflow.com/questions/69381312/in-vs-code-importerror-cannot-import-name-mapping-from-collections

最后修改:2023 年 09 月 12 日
如果觉得我的文章对你有用,请随意赞赏