ubuntu16.04中安装anaconda和python3.6,同时不影响ros所依赖的python2.7

徘徊边缘 提交于 2020-01-30 18:55:26

ubuntu16.04中安装anaconda和python3.6,同时不影响ros所依赖的python2.7

首先明确一点,我所使用的是ubuntu16.04+ros kinetic,ros依赖的python版本为python2.7,为了保证ros能够正常稳定运行,最好不要把ubuntu中的python2.7删掉,也不需要让ros依赖python3.6.我要做的只是让ubuntu中共存多个版本的python,而且互相之间不影响。

安装anaconda

下载anaconda,下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

最好下载5.2.0的版本,这个版本的anaconda默认python3.6。我下载的是5.3.0版本,这个版本中就默认python3.7了。

anaconda的安装,网上教程很多。

在anaconda中新建一个python环境

为了不影响anaconda中的root环境,我又新建了一个python3.6环境。

在系统中查看并修改python环境

首先查看系统中所有python的版本:

$ whereis python

出现如下结果:

python: /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python3.5 /usr/bin/python3.5m /usr/bin/python /usr/lib/python2.7 /usr/lib/python3.5 /etc/python /etc/python2.7 /etc/python3.5 /usr/local/lib/python2.7 /usr/local/lib/python3.5 /usr/include/python2.7 /usr/include/python2.7_d /usr/include/python3.5m /usr/share/python /home/tianbot/anaconda3/bin/python /home/tianbot/anaconda3/bin/python3.7-config /home/tianbot/anaconda3/bin/python3.7m /home/tianbot/anaconda3/bin/python3.7 /home/tianbot/anaconda3/bin/python3.7m-config /usr/share/man/man1/python.1.gz

可以看到目前系统中的python版本非常多,有2.7\3.5\3.7,但是没有找到我刚刚新建的3.6,。

这里我其实只需要2.7和3.6,所以需要使用 update-alternatives命令来为整个系统更改 Python 版本。

所用命令有以下几条:

$ sudo update-alternatives --list python
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 3
$ sudo update-alternatives --install /usr/bin/python python /home/tianbot/anaconda3/envs/py36-tensorflow/bin/python 2
$ sudo update-alternatives --install /usr/bin/python python /home/tianbot/anaconda3/bin/python 1

使用$ update-alternatives --config python命令查看后,出现如下结果:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                                                     Priority   Status
------------------------------------------------------------
* 0            /usr/bin/python2.7                                        3         auto mode
  1            /home/tianbot/anaconda3/bin/python                        1         manual mode
  2            /home/tianbot/anaconda3/envs/py36-tensorflow/bin/python   2         manual mode
  3            /usr/bin/python2.7                                        3         manual mode

表明我把2.7版本设为最高优先级,系统默认使用2.7版本。
优先级从高到低依次为:2.7, 3.6, 3.7。3.5我不需要,没有添加。

具体使用方法可以参考:
https://blog.csdn.net/zhang913913/article/details/80414557
https://blog.csdn.net/ultimate1212/article/details/83866217

修改.bashrc

虽然把2.7设为最高优先级,但是此时如果新开一个shell,输入$ python,显示版本依然为3.7.这是因为在anaconda安装时修改了.bashrc文件,使得默认python版本为anaconda中的root版本,因此我在.bashrc中添加一行:

conda deactivate

使得每次打开shell都能自动关掉anaconda自带的python,这样系统就会以之前设置的优先级来识别python版本,即优先使用2.7版本python。

修改后的.bashrc文件:

# added by Anaconda3 5.3.1 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!

__conda_setup="$(CONDA_REPORT_ERRORS=false '/home/tianbot/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/home/tianbot/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/tianbot/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/home/tianbot/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup

conda deactivate
# <<< conda init <<<

修改后,重新打开一个shell,输入$ python,python版本即为2.7

使用python3.6

如果需要使用3.6的python,只需要:

$ conda env list

显示:

# conda environments:
#
base                  *  /home/tianbot/anaconda3
py27                     /home/tianbot/anaconda3/envs/py27
py36-tensorflow          /home/tianbot/anaconda3/envs/py36-tensorflow

然后再:

conda activate py36-tensorflow

即可

参考:
https://zhuanlan.zhihu.com/p/93042818

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!