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
即可
来源:CSDN
作者:qintianhaohao
链接:https://blog.csdn.net/qintianhaohao/article/details/104115373