关于在Ubuntu20.04(ROS1 noetic)中使用catkin_make编译时发生的与pyhton版本不兼容的问题解决办法

        今天在另外一台电脑上操作复现【ROS建模:一起从零手写URDF模型】这个博客时,发生了一些问题,特此记录下来

【ROS建模:一起从零手写URDF模型】链接:
https://blog.csdn.net/qq_54900679/article/details/135726348?spm=1001.2014.3001.5502

在操作至这里时:

发生了报错,内容如下:

解决方案:

确保你已经安装了 'catkin_pkg',可以在终端中执行:

pip show catkin_pkg

        从输出的信息来看,已经在 Anaconda 环境中安装了 catkin_pkg,版本是 1.0.0。这个版本应该是相对较新的。问题可能不在于 catkin_pkg 本身,而是在于与 Python 3.10 版本的兼容性,或者是与其他 ROS 组件的集成方式。

        考虑到目前这个电脑上使用的是 Anaconda 环境和 Python 3.10,这里建议:

  1. 检查 catkin_pkg 和 Python 3.10 的兼容性:

    • 虽然 catkin_pkg 已安装,但可能存在与 Python 3.10 的兼容性问题。尝试查找 catkin_pkg 的官方文档或相关论坛,看看是否有关于 Python 3.10 兼容性的信息。
  2. 使用系统 Python:

    • ROS 更常与系统自带的 Python 版本(通常是 Python 2.7 或 Python 3.6/3.8)兼容。如果可能,尝试使用系统自带的 Python 版本而不是 Anaconda 的 Python 版本。可以通过修改环境变量或创建一个新的虚拟环境来实现。
  3. 检查其他依赖:

    • 根据错误信息,可能还需要检查其他依赖(如 docutils, pyparsing, python-dateutil, setuptools)是否都与 Python 3.10 兼容。
  4. 尝试在虚拟环境中安装:

    • 创建一个新的 Python 虚拟环境,并在其中尝试安装 ROS 和相关依赖。这可以帮助隔离可能的版本冲突问题。
  5. 查看 ROS 和 Python 版本的兼容性信息:

    • ROS Noetic 通常与 Python 3 兼容,但可能不支持所有的 Python 3.x 版本。查阅 ROS Noetic 的文档,确认它与 Python 3.10 的兼容性。

于是,我们在conda哈环境中新建一个环境,使用python3.8版本:

        Python 3.8 通常与 ROS Noetic 和大多数 Python 包更兼容。按照以下步骤创建和配置新的 Conda 环境:

创建新的 Conda 环境: 打开命令行界面,输入以下命令来创建一个新的环境(假设我们命名它为 ros_env)并指定 Python 版本为 3.8:

conda create -n ros_env python=3.8

激活新环境: 创建环境后,激活它:

conda activate ros_env

安装所需的包: 在新环境中,您需要重新安装 catkin_pkg 和任何其他 ROS 相关的依赖。使用 pipconda 来安装这些包:

pip install catkin_pkg

如果有其他依赖包也需要安装,同样使用 pip 安装。

下面,继续来到工作空间下进行编译,切换到你自己命名创建好的conda环境中:

catkin_make

接着肯定会报错,因为还缺少其他的包,下面我给出需要安装的包:

pip install empy

好了,再次编译出现如下则算成功:

问题解决!!!

补充:最后经过测试,python3.9版本也可以编译成功,推荐python3.9.12版本

其时也可以直接在conda环境中更改python的版本,比如:

激活您的 Conda 环境: 在命令行中,首先激活您要更改 Python 版本的 Conda 环境后,在更改版本之前,您可以检查当前使用的 Python 版本:

python --version

更改 Python 版本: 使用以下命令来安装新的 Python 版本到您的环境中:

conda install python=3.x

3.x 替换为您想要的 Python 版本号,例如 3.73.83.9

验证更改: 安装完成后,再次使用以下命令验证 Python 版本:

python --version

注意依赖兼容性: 更改 Python 版本可能会影响环境中其他包的兼容性。在更改版本后,确保重要的包仍然正常工作。您可能需要重新安装或更新某些包以确保兼容性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JasperReports渲染报表文件时候,读取图片报错:Byte data not found at:xxx.png.\r\n\tat

目录【知识星球】 1.1、错误描述 1.2、解决方案 1.1、错误描述 最近在工作中,使用JasperReports报表比较多一些,有次线上环境里面运行报错,查看报错日志,如下所示: net.sf.jasperreports.engine.JRException: Byte…

Spring Boot 启动错误【Kotlin】

目录 错误详情 错误原因 解决方法一 解决方法二 错误详情 Kotlin:     Module was compiled with an incompatible version of Kotlin.     The binary version of its metadata is 1.7.1, expected version is 1.1.16. 错误原因 编译器或构建工具的版本不匹配所造…

LC201-300

本篇博客是用Go语言编写的详尽简洁代码,这里没有写算法思路,若要看具体思路,请移步力扣官网查看相关高赞题解。本篇博客的特点是代码简洁明了,包含多种写法,适合读者后期复盘巩固,加深理解。这一百题是面试…

(免费领源码)python#Mysql苏州一日游之可视化分析69216-计算机毕业设计项目选题推荐

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游服务等问题,对旅游服务进行…

docker 构建应用

docker 应用程序开发手册 开发 docker 镜像 Dockerfile 非常容易定义镜像内容由一系列指令和参数构成的脚本文件每一条指令构建一层一个 Dockerfile 文件包含了构建镜像的一套完整指令指令不区分大小写,但是一般建议都是大写从头到尾按顺序执行指令必须以 FROM 指…

Web3.0投票如何做到公平公正且不泄露个人隐私

在当前的数字时代,社交平台举办投票活动已成为了一种普遍现象。然而,随之而来的是一些隐私和安全方面的顾虑,特别是关于个人信息泄露和电话骚扰的问题。期望建立一个既公平公正又能保护个人隐私的投票系统。Web3.0的出现为实现这一目标提供了…

java web mvc-04-Apache Wicket

拓展阅读 Spring Web MVC-00-重学 mvc mvc-01-Model-View-Controller 概览 web mvc-03-JFinal web mvc-04-Apache Wicket web mvc-05-JSF JavaServer Faces web mvc-06-play framework intro web mvc-07-Vaadin web mvc-08-Grails 开源 The jdbc pool for java.(java …

完美调试android-goldfish(linux kernel) aarch64的方法

环境要求 Mac m1Mac m1 中 虚拟机安装aarch64 ubuntu22.02Mac m1安装OrbStack,并在其中安装 ubuntu20.04(x86_64) 构建文件系统 在虚拟机 aarch64 ubuntu22.02中构建 安装必要的库 sudo apt-get install libncurses5-dev build-essenti…

ARP安全针对欺骗攻击的解决方案

针对欺骗攻击的解决方案 ARP表项固化 使能ARP表项固化功能后,设备在第一次学习到ARP之后,不再允许用户更新此ARP表项或只能更新此ARP表项的部分信息,或者通过发送ARP请求报文的方式进行确认,以防止攻击者伪造ARP报文修改正常用户…

(5)Elastix图像配准:点集配准(局部区域的精度微调)

文章目录 前言一、原理详解二、参数详解三、项目实战:点集配准3.1、参数文件:parameter_file_points_2D.txt3.2、坐标文件:fixed_points.txt3.3、坐标文件:moving_points.txt前言 (1)Elastix图像配准:原理 + 源码(详解) (2)Elastix图像配准:参数文件(配准精度的关…

【数学】简化剩余系、欧拉函数、欧拉定理与扩展欧拉定理

简化剩余系 与完全剩余系略有区别。 我们定义数组 a i ( 1 ≤ i ≤ n ) a_i(1\le i\le n) ai​(1≤i≤n) 为模 m m m 的简化剩余系,当且仅当 ∀ 1 ≤ i , j ≤ n \forall 1\le i,j\le n ∀1≤i,j≤n,有 a i ≢ a j ( m o d m ) a_i\not\equiv a_j…

【江科大】STM32:MPU6050介绍

文章目录 MPU6050介绍结构图MPU6050参数硬件电路模块内部结构框图数据帧格式寄存器地址 MPU6050介绍 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡…

STM32CubeMX教程27 SDIO - 读写SD卡

目录 1、准备材料 2、实验目标 3、轮询方式读取SD卡流程 3.0、前提知识 3.1、CubeMX相关配置 3.1.0、工程基本配置 3.1.1、时钟树配置 3.1.2、外设参数配置 3.1.3、外设中断配置 3.2、生成代码 3.2.0、配置Project Manager页面 3.2.1、外设初始化调用流程 3.2.2、外设中断调用流…

北京某大厂Linux系统管理和Shell脚本笔试题

1. 写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB #创建一…

现货黄金做日内交易和波段交易有何差异?

在现货黄金投资中,日内交易和波段交易都是投资者常用的手段。但投资者其实搞不懂两者有何区别,有时甚至不清楚自己做的是日内交易还是波段交易,下面我们就来讨论一下这两种交易方法的异同。 两者的区别主要是在持仓的时间上。日内交易顾名思义…

Python中的`__all__`魔法函数使用详解

概要 Python是一门灵活而强大的编程语言,提供了各种机制来控制模块的导入和访问。其中,__all__魔法函数是一种用于限制模块导入的机制,可以明确指定哪些变量、函数或类可以被导入。本文将深入探讨__all__的作用、用法以及示例,以…

C++:类和对象(中)

类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成…

ES文档索引、查询、分片、文档评分和分析器技术原理

技术原理 索引文档 索引文档分为单个文档和多个文档。 单个文档 新建单个文档所需要的步骤顺序: 客户端向 Node 1 发送新建、索引或者删除请求。节点使用文档的 _id 确定文档属于分片 0 。请求会被转发到 Node 3,因为分片 0 的主分片目前被分配在 …

【AI绘画】stablediffusion图生图教程!!

**手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取) ** 目录 一、图生图 1.图生图原理 2.图生图三个步骤 ①图生图基本三步法 ②提示…

深度学习如何入门,如何快速理解深度学习

深度学习是机器学习的一个分支,它使用深度神经网络来模拟人脑的工作方式,通过学习样本数据的内在规律和表示层次,让机器能够具有类似于人类的分析学习能力。深度学习的最终目标是实现人工智能的普及化,使机器能够识别、处理、分析…