Ubuntu 16.04升级Python3.5到Python3.6后带来的问题

背景介绍:
Ubuntu16.04默认的Python版本是2.7(python)和3.5(python3),而我更喜欢用Python3.6,而且anaconda目前默认支持的也是3.6,所以就网上找了一个升级的方法升把Python升级到了3.6.而且设置了python3的默认为python3.6

升级3.6:
https://blog.csdn.net/lzzyok/article/details/77413968
并且使用了update-alternatives来配置具体使用哪个python3版本

然后安装anaconda:
anaconda的安装比较简单,就是在官网上下载anaconda3版本对应的sh文件,然后安装。最后将环境变量写入.bashrc中(zsh需要写入.zshrc文件中)。至此因为环境变量的改变,导致目前默认python已经变成了anaconda的Python3.6

问题Ubuntu自带的终端打不开

重启电脑后terminal打不开,在search打开XTerm后,输入gnome-terminal发现有“ImportError: cannot import name '_gi'”问题。网上找了下原因,其实拷贝之前的35版本的文件为36版本的即可。

indicator-sysmonitor打不开

这个软件是在任务栏中监视cpu/内存/网速等的工具。
因为也是无法使用,所以在终端中输入indicator-sysmonitor命令后看了下错误提示:
ImportError: cannot import name '_psutil_linux'
其实这个问题和上面那个问题很类似。
先用find搜索了下:
sudo find /usr/lib/python3 -name '_psutil*'
/usr/lib/python3/dist-packages/psutil/_psutil_posix.cpython-35m-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/psutil/_psutil_linux.cpython-35m-x86_64-linux-gnu.so
找到这个文件位置后,同样复制了一份36版本的文件出来。问题就得到了解决。

撤销anaconda的环境变量

经过这几个问题,我发现Ubuntu上很多软件对Python版本的依赖比较强,所以考虑了下,取消设置anaconda的环境变量,只是使用别名来方便调用:
# added by Anaconda3 installer
#export PATH="/home/dd/anaconda3/bin:$PATH"
alias pyana="/home/dd/anaconda3/bin/python"
并且增加对python命令的版本切换管理:
sudo update-alternatives  --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives  --install /usr/bin/python python /usr/bin/python3.5 2
sudo update-alternatives  --install /usr/bin/python python /usr/bin/python3.6 3
通过update-alternatives --list python可以查看
通过sudo update-alternatives --config python可以选择
另外sudo update-alternatives --config python3切换回python3为3.5版本

接下来的使用

因为Python3.6版本是为了我个人的代码工程用的,所以就不在系统中默认使用了。以后安装软件的时候还是继续使用Ubuntu的默认依赖。只是在自己的代码中使用anaconda的Python。比如在IDE中配置好Python的解释器。
如果需要在命令行中使用可以通过pyana或者
通过source activate来激活anaconda的环境。比如先查看
./anaconda3/bin/conda info -e
# conda environments:
#
base                  *  /home/dd/anaconda3
然后再激活
➜  ~ source ./anaconda3/bin/activate base
(base) ➜  ~ 

也可以创建一个新的环境:
./anaconda3/bin/conda create -n anapy anaconda
然后就可以切换环境了。

需要注意的一个问题是:
➜  ~ conda
zsh: command not found: conda
➜  ~ ./anaconda3/bin/conda info -e
# conda environments:
#
base                  *  /home/dd/anaconda3
anapy                    /home/dd/anaconda3/envs/anapy

➜  ~ source ./anaconda3/bin/activate anapy
(anapy) ➜  ~ python -V
Python 3.6.5 :: Anaconda, Inc.
(anapy) ➜  ~ pip -V
pip 10.0.1 from /home/dd/anaconda3/envs/anapy/lib/python3.6/site-packages/pip (python 3.6)
(anapy) ➜  ~
(anapy) ➜  ~ source deactivate
source: no such file or directory: deactivate
(anapy) ➜  ~ cat ./anaconda3/anaconda.sh
# added by Anaconda3 installer
export PATH="/home/dd/anaconda3/bin:$PATH"
(anapy) ➜  ~ export PATH="/home/dd/anaconda3/bin:$PATH"
(anapy) ➜  ~ source deactivate                       
➜  ~ 
从环境中退出时也需要指定deactivate的路径。

➜  ~ whereis deactivate
deactivate: /home/dd/anaconda3/bin/deactivate



评论

此博客中的热门博文

Bazel WORKSPACE文件编写

Bazel的概念和技术

Bazel BUILD文件的编写