博主一直在ros环境下工作,由于在电脑上装了anaconda3和深度学习框架pytorch,再次到ros的工作空间下编译时发现python报错。虽然我都是基于c++开发的,但是在ros的工作空间下会发现有python2.7的一个文件夹,在/devel/lib/python2.7/dist-packages路径下会出现工作空间的功能包,会有功能包使用的msg的.py文件,具体是干什么用的,没有搞清楚。下面开始找原因,解决问题。
由于ubutnu系统自带两个版本的python:Python2.7和python3.5,系统默认使用python2.7,安装完anaconda后,输入python命令,系统python版本不再是python2.7,而是变成了anaconda的版本,我怀疑是这个问题。回到宿舍我用自己的没有装anaconda的笔记本试了一下切换python版本,看看同样的工作空间编译是否会出错,将python2.7换成python3.5后发现果然报错了,然后切换回python2.7后发现又可以正常编译了!所以找到问题所在:由于系统的python版本更改了导致的
话不多说,下面直接上解决方法:
切换python版本
对于ubuntu 16.04,由于本身是自带python,这样就减少了在windows下的下载和环境变量配置,非常不错。但是他本身是自带两个版本的python,2.X和3.X,两个版本,两个版本默认的是使用2.X,毕竟3.X是一个趋势,今后我这边应该也会主要使用3.X版本,所以这里记录一下如果在版本间切换以及如何把python版本切换到3.X下的方法。
注意:要以root身份操作
一: 确认本机下的python默认版本。调出终端,输入python即可查看默认的版本:
二:如果想要查看本机自带的python的另一个版本为多少,需要命令python3即可:
三: 如何切换这两个版本以及切换默认的python版本:
我们可以使用 update-alternatives 来为整个系统更改Python 版本。以 root 身份登录,首先罗列出所有可用的python 替代版本信息:
$ update-alternatives --list python
update-alternatives: error: no alternatives for python
如果出现以上所示的错误信息,则表示 Python 的替代版本尚未被update-alternatives 命令识别。想解决这个问题,我们需要更新一下替代列表,将python2.7 和 python3.5 放入其中。
$ update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
输出 update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
$ update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
输出 update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode
ps:如果需要加入其他的python版本,只需输入下列命令
$ update-alternatives --install /usr/bin/python python #其他版本python路径 1
例如
$ update-alternatives --install /usr/bin/python python /home/lzy/anaconda3/bin/python3.7 1
–install 选项使用了多个参数用于创建符号链接。最后一个参数指定了此选项的优先级,如果我们没有手动来设置替代选项,那么具有最高优先 级的选项就会被选中。这个例子中,我们为/usr/bin/python3.5 设置的优先级为2,所以update-alternatives 命令会自动将它设置为默认 Python 版本。
$ python --version
Python 3.5.2
接下来,我们再次列出可用的 Python 替代版本。
$ update-alternatives --list python
会出现下列输出
/usr/bin/python2.7
/usr/bin/python3.5
现在开始,我们就可以使用下方的命令随时在列出的 Python 替代版本中任意切换了。
(这一步是最关键的)
$ update-alternatives --config python
下面就简单了,会提示你输入序号,你想用哪个版本为默认,就输入序号就可以了!