ubunutu16自带有python2.7和python3.5两个版本,由于学习工具需要切换默认的python版本,如deepdive只支持在python2的环境下运行,而iepy则要求python3以上才允许安装。
参考博客https://blog.csdn.net/White_Idiot/article/details/78240298后完成了update-alternatives的设置,由于后来操作不当,踩了一些坑,这里记录一下。
根据以上链接使用update-alternatives设置好python版本后,会先 在/usr/bin目录下创建一个名为python的软连接,如图,
打开属性查看,它又指向etc/alternatives/内的一个名为python软链接,当你输入update-alternatives --config python修改默认版本时,这个etc下的python软连接会根据输入不同来改变它的link target,再返回去指向真正的可执行文件。今天就是没搞懂这个机制,在bin/目录下又创建了一个python软连接,结果输入python --version和sudo python --version出现了不一致,其实就是因为设置了两次update_alternatives,导致2个python --version命令重叠(sudo python --version),找到原因后,依次讲bin/下的python软连接删除,再删除usr/bin/下的python软连接,重新走一遍alternatives的设置即可。
另外,deepdive是不能在python3的环境下执行的,如果你正好使用这个工具出现了一下这个错误:
[ERROR] articles: No such table defined in schema
‘run/ABORTED’ -> ‘20190703/173834.074432838’
File "/home/jiang/local/util/ps_descendants", line 68
print "\n".join(pids)
^
SyntaxError: invalid syntax
别傻乎乎的去改ps_descendants文件了,默认版本换成python2就行。
另外,几个不错的命令:
which python 能真正指向你的默认python的执行文件路径
ln –s /var/www/test /var/test 创建一个软链接
ll /usr/bin 列出目录下所有软连接
sudo ln -s /usr/bin/python3.5 /usr/bin/python 在/usr/bin/下创建名为python的软连接,并让它指向/usr/bin/python3.5