HarmonyOS鸿蒙Next中构建Hi3861时报错ImportError: cannot import name 'common_env' from 'scripts' 解决方案

HarmonyOS鸿蒙Next中构建Hi3861时报错ImportError: cannot import name ‘common_env’ from ‘scripts’ 解决方案 今天刚刚下载了Hi3861的代码code1.0,按照环境要求配置好,然后执行构建的时候报错:

Traceback (most recent call last):
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/Main.py", line 1391, in main
    _exec_main(parser, values)
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/Main.py", line 1355, in _exec_main
    _main(parser)
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/Main.py", line 1029, in _main
    SCons.Script._SConscript._SConscript(fs, script)
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/SConscript.py", line 287, in _SConscript
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/peter/work/HarmonyOS/code/vendor/hisi/hi3861/hi3861/SConstruct", line 31, in <module>
    from scripts import common_env
ImportError: cannot import name 'common_env' from 'scripts' (/root/anaconda3/lib/python3.7/site-packages/scripts/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/peter/.local/bin/scons", line 8, in <module>
    sys.exit(main())
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/Main.py", line 1416, in main
    SCons.Script._SConscript.SConscript_exception()
  File "/home/peter/.local/lib/python3.7/site-packages/SCons/Script/SConscript.py", line 349, in SConscript_exception
    stack = traceback.extract_tb(tb)
  File "/root/anaconda3/lib/python3.7/traceback.py", line 72, in extract_tb
    return StackSummary.extract(walk_tb(tb), limit=limit)
  File "/root/anaconda3/lib/python3.7/traceback.py", line 363, in extract
    f.line
  File "/root/anaconda3/lib/python3.7/traceback.py", line 285, in line
    self._line = linecache.getline(self.filename, self.lineno).strip()
  File "/root/anaconda3/lib/python3.7/linecache.py", line 16, in getline
    lines = getlines(filename, module_globals)
  File "/root/anaconda3/lib/python3.7/linecache.py", line 47, in getlines
    return updatecache(filename, module_globals)
  File "/root/anaconda3/lib/python3.7/linecache.py", line 137, in updatecache
    lines = fp.readlines()
  File "/root/anaconda3/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xca in position 739: invalid continuation byte

打开构建脚本一看,原来是找不到commen_env.py模块,该Python文件放在code/vendor/hisi/hi3861/hi3861/build/scripts/目录下,构建脚本是vendor/hisi/hi3861/hi3861/SConstruct,打开发现问题:

sys.path.append(os.path.join(os.getcwd(), 'build'))
print('------------------', os.getcwd())
print(sys.path)
from scripts import common_env
from scripts import scons_utils
from scripts import scons_app

代码中已经把 build 目录添加到 sys 路径里面了,但是由于 scripts 目录太过常见,添加的路径太靠后,导致 Python 找到了错误的 scripts 文件夹(/root/anaconda3/lib/python3.7/site-packages/scripts),解决方法很简单:把 append 修改为 insert 即可:

sys.path.insert(0, os.path.join(os.getcwd(), 'build'))
print('------------------', os.getcwd())
print(sys.path)
from scripts import common_env
from scripts import scons_utils
from scripts import scons_app

更多关于HarmonyOS鸿蒙Next中构建Hi3861时报错ImportError: cannot import name 'common_env' from 'scripts' 解决方案的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

开发者你好,感谢你的分享!

更多关于HarmonyOS鸿蒙Next中构建Hi3861时报错ImportError: cannot import name 'common_env' from 'scripts' 解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中构建Hi3861时遇到ImportError: cannot import name 'common_env' from 'scripts'错误,通常是由于开发环境配置问题或脚本文件缺失导致的。以下是解决方案:

  1. 检查开发环境:确保已正确安装并配置了HarmonyOS的开发环境,包括Python、Node.js等依赖项。使用hpm工具检查环境配置是否完整。

  2. 更新工具链:使用hpm工具更新工具链和依赖库,确保所有组件都是最新版本。可以通过hpm update命令进行更新。

  3. 检查脚本路径:确认scripts目录存在于项目根目录下,并且包含common_env.py文件。如果文件缺失,可以从官方示例项目中复制过来。

  4. 重新安装依赖:在项目根目录下运行hpm install命令,重新安装所有依赖项,确保common_env模块可用。

  5. 清理构建缓存:使用hpm distclean命令清理构建缓存,然后重新构建项目。

  6. 检查Python路径:确保Python的PYTHONPATH环境变量正确配置,包含项目中的scripts目录。

按照上述步骤操作后,重新构建Hi3861项目,问题应得到解决。

在构建Hi3861时遇到ImportError: cannot import name 'common_env' from 'scripts'错误,通常是因为环境配置或脚本路径问题。解决方法如下:

  1. 检查环境变量:确保PYTHONPATH包含scripts目录的路径。
  2. 验证脚本路径:确认scripts目录中存在common_env.py文件。
  3. 更新依赖:运行pip install -r requirements.txt以确保所有依赖项已安装。
  4. 清理并重新构建:执行make clean后重新构建项目。

通过以上步骤,通常可以解决该导入错误。

回到顶部