【已解决】conda环境下ROS2 colcon build编译选择特定python解释器
目录
- 1 问题背景
- 2 问题探索
- 3 问题解决
- 4 告别Bug
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.10和3.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技术交流群帮忙解决问题
🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …
相关文章:
【已解决】conda环境下ROS2 colcon build编译选择特定python解释器
目录 1 问题背景2 问题探索3 问题解决4 告别Bug 1 问题背景 环境: ROS2 HumbleUbuntu22.04 现象:运行colcon build后由cpp编译生成的python导出库(如自定义消息、服务等),其版本与由python setup.py安装的python库版本不一致,导致…...
QT C++实践| 连接数据库的登录界面实现| 附源码
前言 在之前的两篇博客中QT C实战:实现用户登录页面及多个界面跳转、QT C实践|超详细数据库的连接和增删改查操作|附源码分别详细讲解了:登录界面的制作(UI布局、页面跳转、登录逻辑等)、QT如何连接Mysql数据库,并进行…...
html样式排版
<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…...
Java:性能优化细节31-45
Java:性能优化细节31-45 31、合理使用java.util.Vector 在使用java.util.Vector时,需要注意其性能特性和最佳实践,以确保应用程序运行高效。Vector是一个同步的集合类,提供了动态数组的实现。由于它是线程安全的,所以…...
YOLOv9独家原创改进|增加SPD-Conv无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块
专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、文章摘要 卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而,当图像分辨率较低或物体较小时&…...
Android Gradle开发与应用 (四) : Gradle构建与生命周期
1. 前言 前几篇文章,我们对Gradle中的基本知识,包括Gradle项目结构、Gradle Wrapper、GradleUserHome、Groovy基础语法、Groovy语法概念、Groovy闭包等知识点,这篇文章我们接着来介绍Gradle构建过程中的知识点。 2. Project : Gradle中构建…...
[MRCTF2020]Transform1
a[33]"9,10,15,23,7,24,12,6,1,16,3,17,32,29,11,30,27,22,4,13,19,20,21,2,25,5,31,8,18,26,28,14" b[33]"103,121,123,127,117,43,60,82,83,121,87,94,93,66,123,45,42,102,66,126,76,87,121,65,107,126,101,60,92,69,111,98,77" python代码 a3 [103…...
JavaWeb HTTP 请求头、请求体、响应头、响应体、响应状态码
J2EE(Java 2 Platform Enterprise Edition)是指“Java 2企业版”,B/S模式开发Web应用就是J2EE最核心的功能。 Web是全球广域网,也称为万维网(www),能够通过浏览器访问的网站。 在日常的生活中,经常会使用…...
穿越数字防线:SSH协议的全景解析与未来展望
SSH基本概念 SSH(Secure Shell)是一个用于计算机网络的加密协议,设计用来提供一种安全的方式通过不安全的网络进行远程登录和其他网络服务。SSH协议主要用于远程管理系统和安全地传输信息。 SSH的历史背景 SSH由Tatu Ylnen于1995年开发&am…...
语文教学方法有哪些,产生了什么效果
你是否曾想过,一位普通的语文老师如何化身为智慧的引导者,点燃学生心中的求知之火?让我们一起探寻那些神奇的语文教学方法,以及它们带来的深远影响。 不仅让知识变得容易理解,更在无形中培养了学生的各项能力。通过谈话…...
Docker之网络配置
目录 一. Docker网络介绍 1.1 网络模式 1.2 bridge模式(默认模式) 1.2.1 什么是桥接模式 1.2.2 效果演示 1.2.3 桥接模式的特点 1.3 host模式 1.3.1 什么是host模式 1.3.2 仅主机模式的特点 二. Docker网络实操 2.1 bridge桥接模式 2.1 host仅主机模式 三. Docker自定义网络…...
Mybatis实现分页查询数据(代码实操讲解)
在MyBatis中实现分页查询的常见方式有两种:使用MyBatis内置的分页插件如PageHelper,或者手动编写分页的SQL语句。下面我将为你提供两种方式的示例代码。 使用PageHelper分页插件 首先,确保你的项目中已经添加了PageHelper的依赖。在Maven项…...
【自动驾驶技术系列丛书学习】1.《自动驾驶技术概论》学习笔记
《自动驾驶技术概论》学习笔记 致谢:作者:王建、徐国艳、陈竞凯、冯宗宝 -------------------------------------------------------------------------------------------------------- 笔记目录 《自动驾驶技术概论》学习笔记 1.汽车发展史 2.国…...
2023年全国职业院校技能大赛 GZ073网络系统管理赛项 模块A:网络构建(运维配置)
1.完成整网连通后,进入网络监控运维阶段,运维软件已安装在PC的虚拟机中,通过运维平台监控拓扑中所有网络设备(AP除外)。考试现场提供运维平台登陆的用户名密码信息。 2.通过运维平台将被监控设备纳入监控范围;通过拓扑配置功能,将网络拓扑配置到平台中。...
Linux设备模型(八) - sysfs
一,sysfs目录介绍 sysfs是一个基于内存的虚拟的文件系统,有kernel提供,挂载到/sys目录下,负责以设备树的形式向user space提供直观的设备和驱动信息。 sysfs以不同的视角展示当前系统接入的设备: /sys/block 历史遗…...
C语言实现Linux下的UDP服务端和客户端
程序实现了UDP服务端和客户端,客户端发送消息后等待服务端响应。 udp_server.c: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> …...
Excel小技巧 (2) - 如何去除和增加前导0
1. 如何去除前导0 公式:SUBSTITUTE(A2,0,""),然后拖动十字架,同步所有列数据,轻松搞定。 2. 如何补充前导0 公式:TEXT(D2,"0000000") ,0的个数是数字的完整位数。然后拖动十字架&a…...
【GIS人必看】ArcPy脚本如何导入到ArcToolBox中(上)【建议收藏】
经常使用ArcGIS的朋友应该知道,ArcGIS平台可以支持非常丰富的全栈链二次开发,比如ArcPy脚本开发、ArcGIS Engine桌面端开发、ArcGIS AddIn插件开发、WebGIS开发、移动端GIS开发等。当然,这些技术本人全部精通,后面会给大家陆续介绍…...
AI入门笔记(三)
神经网络是如何工作的 神经网络又是如何工作的呢?我们用一个例子来解释。我们看下面这张图片,我们要识别出这些图片都是0并不难,要怎么交给计算机,让计算机和我们得出同样的结果?难点就在于模式识别的答案不标准&…...
Linux搭建SFTP服务器
案例:搭建SFTP服务器 SFTP(SSH文件传输协议) SFTP(SSH文件传输协议)是一种安全的文件传输协议,用于在计算机之间传输文件。它基于SSH(安全外壳协议)的子系统,提供了加密的…...
别再只会点灯了!用Arduino和WS2812B灯带做个会呼吸的桌面氛围灯(附完整代码)
用Arduino打造会呼吸的WS2812B智能氛围灯系统 你是否已经厌倦了简单的LED闪烁效果?想让你的工作台或游戏空间拥有更高级的光效体验?今天我们将突破基础点灯的局限,用Arduino和WS2812B灯带打造一套具备呼吸效果的智能氛围灯系统。这不仅仅是一…...
# 让工具自己声明并发安全:我把调度逻辑砍到一行
让工具自己声明并发安全:我把调度逻辑砍到一行 这是 《写完一个 AI 编程助手之后,我才确定 prompt 工程不是重点》 的第四篇。前几篇讲了进程模型和权限系统,这一篇讲并发调度。 代码:[https://github.com/sishenaichipingguo/cod…...
负载锌酞菁(ZnPc)/α-萘酚温敏水凝胶,ZnPc/α-Naphthol
名称:负载锌酞菁(ZnPc)/α-萘酚温敏水凝胶,ZnPc/α-Naphthol 一、材料概览:双重功能的精妙融合 负载锌酞菁(ZnPc)/α-萘酚温敏水凝胶,是将具有优异光催化活性的锌酞菁(Zn…...
Langchain自定义LLM实战:我把一个简单的Python函数变成了AI模型接口
LangChain自定义LLM实战:从Python函数到智能接口的魔法变形记 在AI应用开发的世界里,大型语言模型(LLM)正以前所未有的速度改变着技术格局。但你是否想过,那些看似神秘的AI接口背后,其实隐藏着一个惊人的简单本质?今天…...
360T7路由器无线中继保姆级教程:5分钟搞定信号扩展,告别WiFi死角
360T7路由器无线中继保姆级教程:5分钟搞定信号扩展,告别WiFi死角 你是否经常遇到这样的困扰:客厅WiFi信号满格,但卧室却时断时续;刷剧正到精彩处突然卡顿;游戏团战时延迟飙升...这些恼人的网络死角问题&…...
从选型到设计:手把手教你根据7系列FPGA数据手册做项目选型(以Kintex-7为例)
从选型到设计:手把手教你根据7系列FPGA数据手册做项目选型(以Kintex-7为例) 在硬件系统设计中,FPGA选型往往决定着项目的成败。面对Xilinx 7系列丰富的产品线,工程师需要像外科医生选择手术器械一样精准——既要考虑当…...
福田区全栈式鸿蒙AI数智机关入选全市首批OR示范应用项目,深开鸿筑牢政务安全底座
5月13日,在第五次深圳市OR大会暨软信投促大会上,福田区机关事务管理局申报的全栈式鸿蒙AI数智机关,作为全市首批OR示范应用项目亮相,让区委大院成为备受瞩目的“实景展厅”,吸引了24家企业组团实地调研。作为目前在复合…...
10个常用密码破解与恢复工具盘点:如何高效找回遗忘的文件密码?
密码破解与恢复工具是普通用户找回遗忘文档密码、安全审计人员进行渗透测试以及 IT 工程师评估应用安全性的常用利器。这些工具通常基于穷举法(Brute Force),并配合密码字典或彩虹表进行攻击。随着计算能力的提升,密码恢复的效率也…...
Excel MCP Server终极指南:5步实现无Excel环境下的Excel文件操作
Excel MCP Server终极指南:5步实现无Excel环境下的Excel文件操作 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server Excel MCP Server是一个基…...
手把手教你用示波器抓取Intel CPU的SVID时序(附读写判定与Intel送测指南)
实战指南:利用示波器精准解析Intel CPU的SVID通信时序 当一块新设计的服务器主板首次上电时,电源管理系统的稳定性往往决定了整个平台的可靠性。作为硬件工程师,我们常常需要直面这样的场景:主板虽然能点亮,但CPU与电压…...

