在Ubuntu下安装ROS2之后,再安装Anaconda,Anaconda的base环境下的python将被作为默认python进行调用。当用户需要运行ROS2程序的时候,这种默认设置会导致报错。
安装conda并创建conda环境之后,ros2就会使用conda环境,就会造成报错,导致运行不了ros2的程序。
当初我的解决办法是:
在.bashrc环境变量中删除conda有关的环境变量,就可以运行ros2程序。但是这种方法导致不能使用conda了,所以想进一步解决。
先在终端退出conda再说
conda deactivate
解决方法1
用conda建立虚拟环境,在虚拟环境下安装ROS2的运行库来解决这个问题,但是这样做费时费力
解决方法2
比较简单的解决方法去掉.bashrc文件中anaconda默认的环境设置,用一个alias替代。默认情况下使用ROS2的Python环境,当需要使用Anaconda的时候,执行这个alias,使用Anaconda的Python环境。
sudo gedit ~/.bashrc
把原来的conda环境变量注释掉,比如我的环境变量是下面的,我直接注释掉
# >>> conda initialize >>>
# __conda_setup="$('/home/fishros/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
# if [ $? -eq 0 ]; then
# eval "$__conda_setup"
# else
# if [ -f "/home/fishros/miniconda3/etc/profile.d/conda.sh" ]; then
# . "/home/fishros/miniconda3/etc/profile.d/conda.sh"
# else
# export PATH="/home/fishros/miniconda3/bin:$PATH"
# fi
# fi
# unset __conda_setup
# <<< conda initialize <<<
在.bashrc文件中添加一个alias,用于在需要时切换到Anaconda环境。在文件末尾添加如下行:
注意自己的实际路径,不要照抄
alias activate="source /home/fishros/miniconda3/bin/activate"
保存退出,然后 source ~/.bashrc
现在可以使用 activate 命令来激活Anaconda环境
需要切回ROS 2的Python环境时 conda deactivate 简单地关闭conda环境
解决方法3
翻阅很多资料,暂时没找到二者自由切换的好方法,如果这两个都想用,那么就注意管理好python环境