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

news2024/11/24 4:36:23

        今天在另外一台电脑上操作复现【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.coloradmin.cn/o/1406005.html

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

相关文章

CodeWave智能开发平台-3--采购管理系统搭建完整版

摘要 本文是网易数帆CodeWave智能开发平台系列的第15篇,主要介绍了基于CodeWave平台文档的新手入门进行学习,实现一个完整的应用-采购管理系统。 CodeWave智能开发平台-3–采购管理系统搭建完整版 CodeWave参考资源 网易数帆CodeWave开发者社区课程中…

JFinal项目搭建

JFinal项目搭建 JFinal项目搭建 JFinal项目搭建 首先创建maven项目&#xff1a; 删掉报错的jsp页面&#xff1a; 在pom.xml中加入坐标&#xff1a; <dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal-undertow</artifactId>…

【Redis】内存淘汰策略和过期删除策略

一、前言 Redis是一个内存键值对数据库&#xff0c;所以对于内存的管理尤为重要。Redis内部对于内存的管理主要包含两个方向&#xff0c;过期删除策略和数据淘汰策略。由于内存有限&#xff0c;缓存系统必须遵循一些淘汰策略来删除一些不再需要的键&#xff0c;以便为新键腾出…

【学习】FPN特征金字塔

论文&#xff1a;Feature Pyramid Networks for Object Detection &#xff08;CVPR 2016) 参考blog&#xff1a;https://blog.csdn.net/weixin_55073640/article/details/122627966 参考视频讲解&#xff1a;添加链接描述 卷积网络中&#xff0c;深层网络容易响应语义特征&am…

java对代码进行性能分析

使用Instant对象来完成 关键代码: 获取当前时间 Instant now Instant.now(); 获取当前时间距离1970-01-01 00:00:00的秒数 now.getEpochSecond() 完整测试代码 Scanner sc new Scanner(System.in);Instant now1 Instant.now();System.out.println("请随便输个东西:…

进程线程知识

一 初识linux线程 1 线程由来 我们之前说创建一个进程&#xff0c;要创建进程控制块pcb&#xff0c;进程地址空间&#xff0c;页表&#xff0c;而且我之前的博客中都有意无意的说明这个pcb是描述进程的&#xff0c;是os用来管理进程的&#xff0c;而有了线程后&#xff0c;就要…

软件测试|SQL常用语法,你都会吗?

前言 SQL作为一门语言&#xff0c;和其他编程语言一样&#xff0c;都是需要遵循一些特定的规范和准则的&#xff0c;这也就是我们常说的语法&#xff08;Syntax&#xff09;。 下面是几个SQL的语法规则&#xff1a; 所有的 SQL 语法都必须以关键字&#xff08;也称命令&…

品牌如何把“流量”转为“留量”,媒介盒子分享

如果品牌一味追逐流量只能抓住一时的红利期&#xff0c;因此品牌需要把“流量”转为“留量”。依靠流量红利快速崛起的红利品牌&#xff0c;在流量法则失效后&#xff0c;就会陷入增长困境&#xff0c;今天媒介盒子就来和大家聊聊品牌如何把“流量”转为“留量”。 一、 差异化…

力扣279. 完全平方数

动态规划 思路&#xff1a; 假设 dp[i] 为最少组成数 i 的平方数个数&#xff1b;则其上一个状态为 dp[i - j^2] 1&#xff0c;1 为 j^2&#xff1a; 即 i 的最少完全平方数 i - j^2 的最少完全平方数 1&#xff0c;其中 j^2 < i 为最接近 i 的平方数&#xff1b;初始值…

pikachu_ssrf攻略

ssrf&#xff08;curl&#xff09;&#xff1a; 打开pikachu靶场&#xff1a; http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?urlhttp://127.0.0.1/pikachu-master/vul/ssrf/ssrf_info/info1.php 发现URL地址最后面是info1.php 猜测一下有没有可能存在info2.php?…

【Linux工具篇】编辑器vim

目录 vim的基本操作 进入vim(正常模式&#xff09; 正常模式->插入模式 插入模式->正常模式 正常模式->底行模式 底行模式->正常模式 底行模式->退出vim vim正常模式命令集 vim插入模式命令集 vim末行模式命令集 vim操作总结 vim配置 Linux编译器…

Original PIPE and Serdes PIPE

PIPE is PHY Interface for PCIE ,STAT, USB, DispalyPort and Converged IO&#xff0c;上述协议都可以使用这种通用接口。 它是连接物理层PHY 与 MAC( 或者是Link layer ASIC)。PIPE 的技术规范是在上述几种规范基础上发展来的&#xff0c;如果PIPE规范与上述规范有冲突以上述…

无刷电机学习-方波电调 电路篇

想要彻底的理解无刷电机的驱动&#xff0c;那必然少不了学习他的驱动电路和程序。这里用开源的AM32无刷电调&#xff08;方波驱动&#xff09;来作为学习无刷电机笔记。 https://github.com/AlkaMotors附上作者github地址 AM32_Hardware: 基于AT32MCU的AM32PCB另一位大佬开源…

31、WEB攻防——通用漏洞文件上传JS验证mimeuser.ini语言特性

文章目录 文件上传一、前端验证二、.user.ini 文件上传 检测层面&#xff1a;前端、后端等检测内容&#xff1a;文件头、完整性、二次渲染等检测后缀&#xff1a;黑名单、白名单、MIME检测等绕过技巧&#xff1a;多后缀解析&#xff08;php5、php7&#xff09;、截断、中间件特…

golang通过go-git下载gitlab源码

1 申请令牌 方法1&#xff1a;具体项目下申请&#xff1a; 方法2&#xff1a;全局申请 2 获取token 3 下载代码 package mainimport ("fmt""os""github.com/go-git/go-git/v5" )func main() {_, err : git.PlainClone("/tmp/foo",…

力扣hot100 乘积最大子数组 DP

Problem: 152. 乘积最大子数组 文章目录 思路复杂度&#x1f496; Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) &#x1f496; Code public class Solution {public int maxProduct(int[]…

ruoyi框架教程

心血来潮&#xff0c;写一篇关于ruoyi【若依】框架从0-1的教程。说一下使用感受吧&#xff0c;如果有一个架构师或者老手已经把架构改造完成也能指导你如何快速上手&#xff0c;那么你在后面的增删改查系列开发起来会如鱼得水。如果没有人改造&#xff0c;也没有人教你&#xf…

【江科大】STM32:中断系统(理论)

文章目录 中断系统为什么要使用中断中断优先级中断嵌套STM32的中断系统如何管理这些中断NVIC的结构![请添加图片描述](https://img-blog.csdnimg.cn/c77b038fd63a4ddfbcd3b86f6dfe596b.png) 优先级窗口看门狗&#xff08;WWDG&#xff09;&#xff1a;外部中断模块的特性&#…

[Python] scikit-learn - K近邻算法介绍和使用案例

什么是K近邻算法&#xff1f; K近邻算法(K-Nearest Neighbors,简称KNN)是一种基于实例的学习方法&#xff0c;主要用于分类和回归任务。它的基本思想是&#xff1a;给定一个训练数据集&#xff0c;对于一个新的输入实例&#xff0c;在训练数据集中找到与该实例最邻近的K个实例…

SpringBoot统一返回和统一异常处理

Session 认证和 Token 认证 过滤器和拦截器 SpringBoot统一返回和统一异常处理 上篇文章我们学习了基于 Token 认证的登录功能实现&#xff0c;分别使用了过滤器和拦截器去实现登录功能&#xff0c;这篇文章我们来学习项目中常用的统一返回结果和统一异常处理。 一、统一返…