【已解决】conda环境下ROS2 colcon build编译选择特定python解释器

1 问题背景

环境:

  • ROS2 Humble
  • Ubuntu22.04

现象:运行colcon build后由cpp编译生成的python导出库(如自定义消息、服务等),其版本与由python setup.py安装的python库版本不一致,导致诸如

rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'msg_lab_py'等问题

在这里插入图片描述

2 问题探索

检查发现,本地存在两个不同版本的python解释器,分别对应出现问题的版本号3.103.11,这表明conda虚拟环境的引入将导致colcon build进行构建和安装时CMake使用的python解释器版本与python setup.py使用的版本不同。

在这里插入图片描述

因此解决问题的核心是使用同一个环境的python解释器。

首先卸载全局的colcon编译选项,避免编译过程中错选

sudo apt remove python3-colcon-*

接着创建虚拟环境,原理可看Anaconda安装与Python虚拟环境配置保姆级图文教程(附速查字典)

conda create -n ros2 python=3.10

并切换到虚拟环境

conda activate ros2

创建后如下所示

在这里插入图片描述

在该虚拟环境中安装colcon编译依赖项

pip install -U colcon-common-extensions

以及其他依赖项

pip install catkin_pkg numpy lark setuptools==58.2.0

此时可能还会出现问题
ImportError: /home/winter/anaconda3/envs/ros2/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so)

解决方法是安装gcc

conda install -c conda-forge gcc=12.1.0

至此已经可以成功编译

在这里插入图片描述

3 问题解决

总结一下修复的流程:

  • 创建虚拟环境
    conda create -n ros2 python=3.10
    
  • 切换到虚拟环境
    conda activate ros2
    
  • 安装colcon构建系统
    pip install -U colcon-common-extensions
    
  • 安装其他依赖项
    pip install catkin_pkg numpy lark setuptools==58.2.0
    conda install -c conda-forge gcc=12.1.0
    

4 告别Bug

本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题


🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
  • 27
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Winter`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值