本文讨论Ubuntu下的conda与ros共存问题,即安装conda后catkin编译不通过的解决办法。
原因分析
未安装conda前使用catkin编译ros消息和包没有问题,安装了conda后catkin编译不通过。原因在于catkin在编译的时候依赖python,未安装conda之前,catkin的python依赖安装在了系统默认位置,而conda中的python是一个完全隔离的环境,未安装这些依赖,因此编译不通过。
有博客中提到了一种解决办法。但即使在conda(python3)环境下安装了博主提到的ros依赖,依然无法使用catkin编译某些ros消息和包,因为他们可能依赖python2。最好的解决办法是让catkin工具查找系统默认的python环境 。
conda环境
无论是Miniconda还是Anaconda,在安装脚本结束的时候会询问是否进行初始化(conda init)。如果进行初始化,则会在bashrc中添加以下内容:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/username/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0