在ROS学习过程中 话题通信-自定义接口中 在配置cmakelist文件中遇到的问题
(base) xwh@yummy:~/ws02_plumbing$ conda deactivate
xwh@yummy:~/ws02_plumbing$ source /opt/ros/humble/setup.bash
xwh@yummy:~/ws02_plumbing$ colcon build
Starting >>> base_interfaces
--- stderr: base_interfaces
CMake Error at /opt/ros/humble/share/rosidl_adapter/cmake/rosidl_adapt_interfaces.cmake:59 (message):
execute_process(/home/xwh/miniconda3/bin/python3 -m rosidl_adapter
--package-name base_interfaces --arguments-file
/home/xwh/ws02_plumbing/build/base_interfaces/rosidl_adapter__arguments__base_interfaces.json
--output-dir
/home/xwh/ws02_plumbing/build/base_interfaces/rosidl_adapter/base_interfaces
--output-file
/home/xwh/ws02_plumbing/build/base_interfaces/rosidl_adapter/base_interfaces.idls)
returned error code 1:
AttributeError processing template 'msg.idl.em'
Traceback (most recent call last):
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/resource/__init__.py", line 51, in evaluate_template
em.BUFFERED_OPT: True,
AttributeError: module 'em' has no attribute 'BUFFERED_OPT'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/xwh/miniconda3/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/home/xwh/miniconda3/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__main__.py", line 19, in <module>
sys.exit(main())
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/main.py", line 53, in main
abs_idl_file = convert_to_idl(
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/__init__.py", line 19, in convert_to_idl
return convert_msg_to_idl(
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/msg/__init__.py", line 39, in convert_msg_to_idl
expand_template('msg.idl.em', data, output_file, encoding='iso-8859-1')
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/resource/__init__.py", line 23, in expand_template
content = evaluate_template(template_name, data)
File "/opt/ros/humble/local/lib/python3.10/dist-packages/rosidl_adapter/resource/__init__.py", line 69, in evaluate_template
_interpreter.shutdown()
AttributeError: 'NoneType' object has no attribute 'shutdown'
Call Stack (most recent call first):
/opt/ros/humble/share/rosidl_cmake/cmake/rosidl_generate_interfaces.cmake:130 (rosidl_adapt_interfaces)
CMakeLists.txt:14 (rosidl_generate_interfaces)
gmake: *** [Makefile:226:cmake_check_build_system] 错误 1
---
Failed <<< base_interfaces [0.31s, exited with code 2]
Summary: 0 packages finished [0.56s]
1 package failed: base_interfaces
1 package had stderr output: base_interfaces
2 packages not processed
关键在于Python环境发生冲突
AttributeError: module 'em' has no attribute 'BUFFERED_OPT'
下面是解决方法:
1、修复 .bashrc 中的错误行
# 编辑 .bashrc 文件
nano ~/.bashrc
查找类似这样的行:
source /home/xwh/ws00_hellowolrd/install/setup.bash
删除或注释掉(在行首加 #)这一行,然后保存文件(Ctrl+O, Enter, Ctrl+X)。
2、重新加载 .bashrc
source ~/.bashrc
3、完全重置环境
# 清除 Conda 影响
unset CONDA_PREFIX
unset CONDA_DEFAULT_ENV
unset CONDA_PROMPT_MODIFIER# 重置 PATH
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"# 重新设置 ROS 环境
source /opt/ros/humble/setup.bash
4、验证 Python 环境
which python3
# 应该显示 /usr/bin/python3python3 -c "import em; print(em.__version__)"
# 应该显示 3.3.4 或类似版本
5、完全清除之前的构建
rm -rf build install log
6、重新构建
colcon build --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python3
结果如下:

2万+

被折叠的 条评论
为什么被折叠?



