AttributeError: module ‘em‘ has no attribute ‘BUFFERED_OPT‘的解决方法

该文章已生成可运行项目,

在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/python3

python3 -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

结果如下:

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值