RT-Thread论坛
直播中

石胜厚

8年用户 1145经验值
私信 关注
[问答]

ubuntu下安装环境执行 scons --menuconfig出错的原因?如何解决?

[i][i][i]
AttributeError: ‘str’ object has no attribute ‘load_config’:
File “/home/rt-thread-v4.1.0/bsp/STM32/stm32f407-st-discovery/SConstruct”, line 48:
objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
File “/home/rt-thread-v4.1.0/tools/building.py”, line 384:
menuconfig(Rtt_Root)
File “/opt/buildtools/python-3.9.11/lib/python3.9/site-packages/menuconfig.py”, line 685:
_conf_changed = _load_config()
File “/opt/buildtools/python-3.9.11/lib/python3.9/site-packages/menuconfig.py”, line 741:
print(_kconf.load_config())

请大佬帮忙看下相关问题。

回帖(1)

地方

2025-6-18 17:50:33

根据您提供的错误信息,问题是由于 kconfiglib 版本与 RT-Thread 构建系统不兼容引起的。错误 AttributeError: 'str' object has no attribute 'load_config' 表明代码尝试在字符串对象上调用 load_config 方法(应为 Kconfig 对象),根本原因是新版 kconfiglib 修改了 API。


解决方法:


1. 降级 kconfiglib 版本(推荐)


RT-Thread v4.1.0 需要 kconfiglib<=14.1.0(旧版 API)。执行以下命令:


   pip3 install kconfiglib==14.1.0

若已安装新版,先卸载:


   pip3 uninstall kconfiglib
   pip3 install kconfiglib==14.1.0

2. 更新 RT-Thread 代码(长期方案)


若您使用的 RT-Thread 版本较旧,升级到最新版本(v4.1.2+)可解决兼容性问题:


   cd /home/rt-thread-v4.1.0
   git pull origin master       # 更新代码
   git checkout v4.1.2         # 或切换至更新版本

最新代码已适配新版 kconfiglib 的 API 改动。


3. 使用 RT-Thread Env 工具


通过 RT-Thread 的官方环境工具管理依赖:


   source ~/.env/env.sh         # 激活 Env 环境
   menuconfig                   # 直接使用 Env 内置命令

Env 工具会自动处理兼容性问题。


4. 手动更新构建脚本(临时方案)


修改错误文件 /home/rt-thread-v4.1.0/tools/building.py


   # 第 384 行附近:将旧版用法替换为
   import menuconfig
   menuconfig.menuconfig()

此修改需同步适配 menuconfig.py 的其他逻辑,建议优先选择前三种方案。


验证解决:


scons --menuconfig  # 成功运行应弹出配置界面

总结:





































方案 推荐度 操作复杂度 适用场景
降级 kconfiglib ★★★★ 简单 旧版项目快速修复
更新 RT-Thread 代码 ★★★★☆ 中等 长期维护项目
使用 Env 工具 ★★★★★ 低(需安装) 官方推荐标准流程
手动修改脚本 ★★ 紧急调试(不推荐)


建议优先降级库或使用 Env 工具。若问题仍未解决,检查环境变量 RTT_ROOT 是否指向正确的 SDK 根目录(即 /home/rt-thread-v4.1.0),并确认 Python 路径无冲突。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分