catkin_make 使用记录

本文记录了在使用ROS的catkin_make编译指定包时遇到的异常情况,特别是关于ModuleNotFoundError的问题。当执行Python脚本时,如果缺少指定库,可能是因为ROS包的CMakeLists.txt文件中catkin_install_python()函数设置不当,导致使用了错误的Python解释器。解决方法包括检查环境、修改catkin_install_python()函数、直接修改Python文件中的解释器或避免使用catkin_install_python()。编译时可通过指定PYTHON_EXECUTABLE环境变量来确保使用正确的Python环境。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

ROS catkin_make 使用记录

编译指定 ROS 包

# 编译指定 ros 包
catkin_make  -DCATKIN_WHITELIST_PACKAGES="package1;package2"
# 或
catkin_make --only-pkg-with-deps <target_package>

异常记录

  1. ModuleNotFoundError: No module named ‘***’
    执行 python 脚本节点时,缺少指定库文件而报错。
    解决方法:
    1> 检查当前环境中包含指定的库并且安装正确。
  2. 当环境中确定包含第三方库,仍然报错
    检查 ros 包的 CMAkeLists.txt 文件是否使用了 catkin_install_python() 函数。 ROS 包在执行时会优先使用函数catkin_install_python() 指定的 python 来运行节点,而不使用 python 文件首行指定的 python 环境也不会使用 terminal 正在运行的 python 环境。其优先级如下:
catkin_install_python() 指定 > python 脚本指定 > terminal 环境运行

所以当 catkin_install_python() 函数中指定的 python 解释器和预计的 python 解释器不同时,也会报错。
解决方法:
1> 修改 catkin_install_python() 函数中的python解释器。
2> 或者在 devel/lib 路径下找到指定的 ROS 包以及名称对应的 python 文件,修改该 python 文件中的解释器。
3> 或者重新编译报错的包,并在编译时指定使用的 python 解释器。

# 编译时使用指定 python
catkin_make -DPYTHON_EXECUTABLE=/home/wy/anaconda3/envs/YOLO/bin/python3

4> 也可以不使用 catkin_install_python() 函数,只在对应的 python 脚本中指定 python 解释器,这样就不会因为环境问题而报错了。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值