最近需要搭建Pytorch框架,复现某个工程,需要在python3.6版本下实现。由于ubuntu14.04系统默认安装的是python2.7.6和python3.4版本,在这个地方被坑了无数次,主要是安装了python后需要安装python3.6的依赖包,用老方法装依赖包总是装到系统默认的python2.7.6下面。折腾了一晚上,坑死人了,最后还重装了一次系统。真是应了那句话不踩坑不了解事实真相。最后发现ubuntu下面可以同时安装过个版本pyhton,通过pyenv来管理。
再安装python之前,我们首先要安装这个管理工具pyenv:

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l

  我们还可以通过下面这个命令来查看可以安装的python版本:

$ pyenv install --list

如果我们确定要安装python3.6.1的话,接下来我们就可以安装python了,但是再安装之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:

$ sudo apt-get install libc6-dev gcc
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

上面的依赖包搞定之后,我们就可以安装python了:

$ pyenv install 3.6.1 -v

  该命令会从github上下载python的源代码,并解压到/tmp目录下,然后在/tmp中执行编译工作。若依赖包没有安装,则会出现编译错误,需要在安装依赖包滞后重新执行该命令。

安装完成之后,需要使用如下命令对数据库进行更新:

$ pyenv rehash

查看当前已经安装的python版本

$ pyenv versions
* system (set by /home/seisman/.pyenv/version)
3.6.1

  其中星号代表是当前系统正在使用的python版本是系统自带的。

设置全局的python版本

$ pyenv global 3.6.1
$ pyenv versions
system
* 3.6.1 (set by /home/seisman/.pyenv/version)

  从上面,我们可以看出来当前的python版本已经变为了3.4.3。也可以使用pyenv local或pyenv shell临时改变python的版本。

确认python版本

$ python
Python 3.6.1 (default, Apr  1 2015, 19:10:43) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

注意事项:


  (1) 输入python即可使用新版的python;
  (2) 系统自带的脚本会以/usr/bin/python的方式直接调用老版本的python,因而不会对系统脚本产生影响;
  
  这里就是为不同的版本的python安装依赖包,由于我是安装的是python3.6.1版本,所以需要安装pip3,如何安装pip3,网上一搜有很多:

$ sudo apt-get install python3-pip

  (3) 使用pip安装第三方模块时会安装到~/.pyenv/versions/3.4.3下,不会和系统模块发生冲突;
   (4) 使用pip安装模块后,可能需要执行pyenv rehash更新数据库。

   这里我是安装python3.6.1版本,为python3.6.1安装第三方的依赖包需要通pip3来安装,例如:
  

$ pip3 install numpy
 $ pip3 install scipy