Conda安装rospy后ROS版本冲突及卸载失败问题求助
解决Conda环境中ROS Melodic与系统Noetic冲突及卸载失败问题
一、强制卸载Conda环境里的ROS包
如果conda uninstall ros-rospy卸载失败,按以下步骤操作:
- 先确保激活的是目标环境:
conda activate mujoco_py - 用带发行版前缀的精确包名+强制参数卸载:
conda uninstall --force ros-rospy ros-melodic-rospy - 要是还不行,直接删除环境内的ROS相关文件:
- 先找环境路径:
conda env list,找到mujoco_py对应的路径(比如~/miniconda3/envs/mujoco_py) - 删除Python site-packages里的ROS文件:
(把rm -rf ~/miniconda3/envs/mujoco_py/lib/python3.8/site-packages/ros*python3.8换成你环境里的Python版本) - 删除bin目录下的ROS脚本:
rm -rf ~/miniconda3/envs/mujoco_py/bin/ros*
- 先找环境路径:
- 最后清理conda缓存:
conda clean -a
二、实现Conda与系统ROS环境的隔离
要让两个环境互不干扰,得做好环境变量的隔离:
1. 确保系统环境正常用Noetic
退出Conda环境后,检查~/.bashrc里的ROS配置,应该只有这一行:
source /opt/ros/noetic/setup.bash
如果之前被Conda添加过其他ROS相关的source语句,删掉多余的,然后执行source ~/.bashrc生效。
2. Conda环境中使用ROS(两种可选方式)
方式一:复用系统的Noetic
激活Conda环境后,手动source系统的Noetic配置:
conda activate mujoco_py source /opt/ros/noetic/setup.bash
想自动执行的话,给Conda环境加激活脚本:
- 创建激活脚本目录:
mkdir -p ~/miniconda3/envs/mujoco_py/etc/conda/activate.d - 新建
ros_setup.sh文件并写入内容:#!/bin/bash source /opt/ros/noetic/setup.bash - 再创建退出脚本避免影响系统:
mkdir -p ~/miniconda3/envs/mujoco_py/etc/conda/deactivate.d - 新建
ros_deactivate.sh文件并写入:#!/bin/bash unset ROS_DISTRO ROS_ROOT ROS_PACKAGE_PATH
方式二:在Conda环境独立安装Noetic
不想依赖系统ROS的话,直接装Noetic版本的rospy:
conda activate mujoco_py conda install -c conda-forge ros-noetic-rospy
装完后用env |grep ROS检查,应该显示ROS_DISTRO=noetic
三、验证环境是否正常
- 退出Conda环境,执行
roscore,确认启动的是Noetic版本 - 激活
mujoco_py环境,执行以下命令验证rospy:
应该输出Noetic对应的版本号(比如1.15.14)python -c "import rospy; print(rospy.__version__)"
内容的提问来源于stack exchange,提问作者Longsen Gao
相关产品推荐
相关产品推荐

