OpenHarmony之Ubuntu22.04执行hb set报错
错误提示
最近在使用Ubuntu22.04搭建OpenHarmony编译环境,在执行hb set
命令选择开发板时出现如下报错:
详细log如下:
fangye@fangye-virtual-machine:~/niobeu4_src$ hb set[OHOS ERROR] Traceback (most recent call last):[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/hb/__main__.py", line 84, in main[OHOS ERROR] status = args.command(args)[OHOS ERROR] File "/home/fangye/niobeu4_src/build/lite/hb_internal/set/set.py", line 45, in exec_command[OHOS ERROR] return set_product() == 0[OHOS ERROR] File "/home/fangye/niobeu4_src/build/lite/hb_internal/set/set.py", line 62, in set_product[OHOS ERROR] product_info = Product.product_menuconfig()[OHOS ERROR] File "/home/fangye/niobeu4_src/build/lite/hb_internal/common/product.py", line 260, in product_menuconfig[OHOS ERROR] product = menu.list_promt('product', 'Which product do you need?',[OHOS ERROR] File "/home/fangye/niobeu4_src/build/lite/hb_internal/cts/menuconfig.py", line 34, in list_promt[OHOS ERROR] return self._promt(questions, kwargs)[OHOS ERROR] File "/home/fangye/niobeu4_src/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 "", line 1050, in _gcd_import[OHOS ERROR] File "", line 1027, in _find_and_load[OHOS ERROR] File "", line 1006, in _find_and_load_unlocked[OHOS ERROR] File "", line 688, in _load_unlocked[OHOS ERROR] File "", line 883, in exec_module[OHOS ERROR] File "", line 241, in _call_with_frames_removed[OHOS ERROR] File "/home/fangye/niobeu4_src/build/lite/hb_internal/cts/prompt.py", line 21, in [OHOS ERROR] from prompt_toolkit.shortcuts import run_application[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/__init__.py", line 16, in [OHOS ERROR] from .interface import CommandLineInterface[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/interface.py", line 19, in [OHOS ERROR] from .application import Application, AbortAction[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/application.py", line 8, in [OHOS ERROR] from .key_binding.bindings.basic import load_basic_bindings[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/key_binding/bindings/basic.py", line 9, in [OHOS ERROR] from prompt_toolkit.renderer import HeightIsUnknownError[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/renderer.py", line 11, in [OHOS ERROR] from prompt_toolkit.styles import Style[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/styles/__init__.py", line 8, in [OHOS ERROR] from .from_dict import *[OHOS ERROR] File "/home/fangye/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py", line 9, in [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)
原因分析
在Ubuntu20.04上没有这个问题,其python版本为3.8.x,而Ubuntu22.04的python版本是3.10.x,由于hb命令是用python写的,故猜测这是由于python版本导致的问题。
根据报错提示信息:
Unhandled error: cannot import name 'Mapping' from 'collections'
可以知道报错原因是导入Mapping包时失败,在往上搜一下这个报错,果然有很多人遇到类似的问题,报错信息跟这个情况很像:
https://blog.csdn.net/hongel110/article/details/121333144
解决办法
修改报错的python脚本,将from collections import Mapping
修改为from collections.abc import Mapping
即可:
vim ~/.local/lib/python3.10/site-packages/prompt_toolkit/styles/from_dict.py