说明

自从有一次改变了win10控制台里面的一个编码问题之后(好像是默认编码改成了uft-8),python再也不能好好的跑在我的win10上面了,控制台启动python、pip会出错,具体错误是”LookupError: unknown encoding: cp65001”,然后由于这些天我的系统里面docker什么的都崩了,所以干脆安装了一个ubuntu。之前几乎没有用过Ubuntu,安装软件过程中也是遇到了一些坑,所以把安装Anaconda中遇到的问题记录下来,方便下次查找。

当然上面提到的编码问题还是有解决办法的,但是我不会彻底处理这个问题,一个解决方案是在控制台中执行这两行:chcp 65001 和 set PYTHONIOENCODING=utf-8,具体原因不懂。但是由于每次都要这么执行,所以不想折腾,干脆装双系统。

安装Anaconda

安装Anaconda的原因是想用Jupyter notebook,然而安装界面提示:

For new users, we highly recommend installing Anaconda. Anaconda conveniently installs Python, the Jupyter Notebook, and other commonly used packages for scientific computing and data science.

加上之前有人推荐过Anaconda,之后安装tensorflow说不定用的上,所以就安装了,其实步骤还比较简单。

在官网(https://www.continuum.io/downloads)下载Anaconda,硬盘中是一个脚本(类似于windows里面的bat)会指导安装步骤,在Terminal中切到脚本所在的目录执行就行了

cd Downloads
bash Anaconda3-4.2.0-Linux-x86_64.sh 

然后会出现许可条款,输入yes后确认安装目录和是否加入PATH(类似windows中的环境变量)

接着就能安装完成了,确认是否安装成功可以新开一个窗口然后执行 conda list,如果可以识别这个指令表明安装成功。安装完成后参照这个链接中的提示执行下面指令升级Anaconda: https://mas-dse.github.io/startup/anaconda-ubuntu-install/

conda update --all --yes

由于我下载的是python3.5版本的,安装成功后,系统里面python版本直接变成了3.5,有时候需要执行python2.7的代码会比较麻烦,所以创建了一个python2的环境,在terminal中执行:

conda create --name python2 python=2

其中python2是这个环境的名字,可以换成别的,后面python=2是指定环境中python的版本,这个链接(http://conda.pydata.org/docs/py2or3.html)里面给的例子是python3的(conda create --name snakes python=3),没有尝试过其他的选项。

创建成功后可以通过conda info --envs指令看目前的conda环境信息。

20161207_1

然后就可以进入python2的环境执行python2.7的代码了:

20161207_2

在windows系统中执行 activate [name] 进入虚拟环境 deactivate 退出

打开ipython notebook

然后执行ipython notebook就能打开Jupyter,然而好像不管从python2还是python3环境进入,Jupyter中的python版本都是3.5的:

20161207_3

这个原因应该是刚刚创建的python2环境没有安装ipython notebook,因此需要在python2中先安装一个ipython

conda install notebook ipykernel
ipython kernel install --user

但是我在python2环境中安装ipython的时候出现了问题

20161207_4

网上看到的说法是没有安装backports.shutil_get_terminal_size并且有人安装这个之后问题解决了,然而我安装的时候提示已经存在,卸载后重新安装结果也是一样,并且pip list中能看到这个是已经安装了的。

20161207_5

继续搜索发现有个方法(http://abelxu.blog.51cto.com/9909959/1852263)是找到报错的那个代码,修改引用的模块,改为shutil_backports,尝试了一下问题解决了

20161207_6

目前效果是从Python2环境中进入ipython notebook发现python版本为2.7,外部ipython中版本正常,实现了不同python版本的效果

20161207_7

建一个空的环境

conda create --no-default-packages -n myenv python=3.5

删除环境

conda remove --name myenv --all

or

conda env remove --name myenv

参考

  1. Windows cmd encoding change causes Python crash - stackoverflow
  2. Install Anaconda on Ubuntu (Python) - youtube
  3. Jupyter Documentation
  4. Download Anaconda
  5. Anaconda and iPython Notebook Install Instructions - Ubuntu
  6. Managing Python
  7. Using both Python 2.x and Python 3.x in IPython Notebook
  8. ImportError: No module named shutil_get_terminal_size #9815
  9. 安装ipython报错”ImportError: No module named shutil_get_terminal_size”