Anaconda|Anaconda与ROS共存问题

本文介绍了解决Anaconda安装后与ROS环境冲突的问题,通过调整环境变量和安装特定包实现了二者共存。
部署运行你感兴趣的模型镜像

问题描述

在安装Anaconda后

$ cd ~/catkin_ws
$ catkin_make
  • 1
  • 2

编译报错

ImportError: No module named rospkg
  • 1

问题分析

刚开始以为rospkg出了差错,使用以下命令查错。

$ sudo apt-get install python-rospkg
  • 1

发现rospkg包已经更新到最新版本,那么就基本排除ROS本身Python包出错的可能性。

又想到,安装Anaconda时有

Do you wish the installer to prepend the Anaconda2 install location to PATH in your /home/tingting/.bashrc ? [yes|no]

此处应该是在环境变量中加了什么奇怪的东西影响到ROS的环境变量。为了探究明白,查看环境变量。

$ echo $PATH
  • 1

结果如下

/home/hanxy/anaconda2/bin:/opt/ros/indigo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
  • 1

查看~/.bashrc文件

$ sudo gedit ~/.bashrc
  • 1

发现文件末尾有Anaconda添加的$PATH变量

$ export PATH=/home/hanxy/anaconda2/bin:$PATH
  • 1

解决方法

初步解决

想要快速解决很简单,注释掉上述导入环境变量的语句,但同时Anaconda内的包不能正常使用,因此每次开启终端都应该输入上述语句,以获得Anaconda的环境变量。
但这样在Anaconda中仍然无法使用ROS包,在ROS中也无法使用Anaconda的包,这将是很大的损失。

彻底解决

无法在Anaconda中导入ROS包归根结底是由于没有相应的包,因此

$ conda install setuptools
$ pip install -U rosdep rosinstall_generator wstool rosinstall six vcstools
  • 1
  • 2
$ hanxy@hanxy-Ubuntu:~$ python
Python 2.7.14 |Anaconda, Inc.| (default, Oct 16 2017, 17:29:19) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> import rospkg
>>> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

同时导入tensorflow和rospkg成功~


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

Python3.8

Python3.8

Conda
Python

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

### 安装和运行多个ROS版本 为了在同一系统上安装并运行多个ROS(Robot Operating System)版本而不发生冲突,可以采取以下几种方法: #### 使用Docker容器化环境 通过创建独立的Docker镜像来隔离不同版本的ROS。这允许每个ROS实例拥有自己的一套依赖库和服务进程,从而避免了软件包之间的潜在冲突[^1]。 ```bash docker pull ros:noetic-ros-core # 获取Noetic版本的核心组件 docker pull ros:melodic-ros-core # 获取Melodic版本的核心组件 ``` #### 利用虚拟机技术 建立多个轻量级虚拟机或者使用Vagrant工具自动化配置这些VMs。每一个虚拟机会模拟一台完整的计算机,在其中单独部署特定版本的ROS及其所需的一切资源。 #### 运用Conda环境管理器 Anaconda/Miniconda提供了强大的Python环境管理系统——`conda`,它同样适用于管理和切换不同的ROS发行版。借助于`rosdep`命令配合`conda env create`指令能够方便快捷地构建出适配各版ROS的工作空间。 ```yaml name: melodic_env channels: - conda-forge dependencies: - python=3.6 - pip prefix: ~/envs/melodic ``` #### 手动调整工作区路径环境变量设置 当确实需要共存多份ROS源码树时,则需谨慎规划各自的编译目录以及相应修改`.bashrc`文件中的PATH、PYTHONPATH等环境参数指向正确的ROS版本位置。 ```bash export ROS_DISTRO=noetic source /opt/ros/noetic/setup.bash # 或者针对其他版本重复上述两行操作 ``` 以上策略均有助于实现同一台机器上的跨ROS版本开发测试需求,并且有效防止因共享全局状态而导致的功能失效现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值