catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

文章讲述了在Ubuntu20.04环境下,安装Anaconda后使用catkin_make遇到的empy执行错误,原因是catkin_make找的是Anaconda下的Python。解决办法是将PYTHON_EXECUTABLE指向系统自带的Python3。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

自己的测试环境: Ubuntu20.04

一、问题描述

自己安装完 anaconda 后,再次执行 catkin_make 遇到如下问题:

CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python3-empy'

报错截图:
在这里插入图片描述

二、解决方法

出现这个问题的主要原因是 catkin_make 找到的是 anaconda 下的 python,所以修改成以下指令,即可解决问题:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

参考链接

[1] 南山&M. ubuntu20.04出现Unable to find either executable ‘empy‘ or Python module ‘em‘… try [EB/OL]. https://blog.csdn.net/weixin_44857882/article/details/124296306, 2022-04-20/2024-01-04.
[2] Coffee504. 在安装anaconda后catkin_make不好用 [EB/OL]. https://blog.csdn.net/weixin_63761958/article/details/133123488, 2023-09-21/2024-01-04.

<think>好的,我需要解决用户提到的在ROS Noetic中使用catkin_make时遇到的Python3 empy模块导致的CMake错误。首先,用户引用了多个相关的引用信息,比如错误出现在empy.cmake或safe_execute_process.cmake,并且解决方法涉及指定Python路径。 首先,我应该确认错误的具体原因。根据引用[3]和[4],问题可能是在编译时CMake使用了Anaconda的Python环境,而不是系统的Python3。EmPy模块是ROS中用于处理模板的工具,需要正确安装。如果系统Python3未安装empy,或者CMake指向了错误的Python路径,就会导致该错误。 接下来,用户已经尝试了使用catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3来指定Python解释器,但可能还有其他步骤需要处理。例如,确保empy模块已经正确安装在系统Python3环境中。可能需要检查是否通过pip3安装了empy,或者是否需要通过系统包管理器安装python3-empy。 另外,用户可能需要设置PYTHONPATH环境变量,确保编译时能够找到正确的模块。同时,清理之前的构建文件也是一个好习惯,避免残留文件导致的问题。 在整理步骤时,应该分点列出解决方案,包括安装empy模块、指定Python解释器、设置环境变量和清理构建。此外,要引用提供的引用信息,例如引用[2]和[4]提到使用特定命令,引用[3]提到错误原因。 最后,生成相关问题,帮助用户进一步处理类似问题,比如如何检查Python版本,或如何永久设置Python路径。这些问题应该与当前错误相关,并且基于引用中的信息。</think>针对ROS Noetic中使用`catkin_make`时因Python3 empy模块导致的CMake错误,以下是分步解决方案: ### 解决方法 1. **安装Python3 empy模块** 确保系统Python3环境中已安装`empy`模块: ```bash sudo apt-get install python3-empy # 通过系统包管理器安装 # 或使用pip3安装 pip3 install empy ``` 若未安装该模块,CMake会因无法解析模板文件而报错[^3][^4]。 2. **指定Python解释器路径** 在编译时强制指定系统Python3路径,避免CMake误用Anaconda等虚拟环境: ```bash catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 ``` 此命令显式声明Python解释器位置,确保编译流程调用正确的Python版本[^2]。 3. **检查环境变量** 清理可能干扰编译Python环境变量(如`PYTHONPATH`): ```bash unset PYTHONPATH # 临时取消环境变量 ``` 避免残留路径指向非系统Python库。 4. **清理并重新编译** 删除已有构建文件,避免缓存导致问题: ```bash cd ~/catkin_ws # 进入工作空间 rm -rf devel/ build/ # 清理历史编译结果 catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 # 重新编译 ``` ### 原理解析 ROS Noetic默认依赖Python3,但若编译时CMake错误地调用Anaconda或其他Python发行版(缺少`empy`模块),会导致模板处理失败。通过`-DPYTHON_EXECUTABLE`参数强制指定系统Python3路径,确保依赖解析正确。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值