Linux安装Anaconda和TensorFlow

众所周知Python常用的版本有2.x和3.x,常常会引起版本问题。由于我在Linux系统中已经安装有Python3.x和对应的TensorFlow,现在遇到需要跑在Python2.x下的TensorFlow工程时,就很麻烦,因此可以用Anaconda来建立一个独立的小环境来另外安装Python2.x及其对应的TensorFlow来跑这个工程。

Anaconda

Anaconda(官网)是什么?其实就是一个“开源包管理系统和环境管理系统”,主要用于解决我遇到的上述问题,需要安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。它适用于Linux,OS X和Windows,是为Python程序创建的,但可以打包和分发任何软件。所以虽然我这里主要用于Python,但其实也可以用于其他很多环境。

对应于Python2和Python3,Anaconda也有两种版本,分别为Anaconda2和Anaconda3。两个版本可以在官网很方便地下载到安装包:

官网下载安装包

选择系统后下载对应的包即可,如果不确定自己的系统情况,可以通过命令查看:

$ uname -a

其实还有一种体积更小的版本叫做Miniconda,区别在于:

Miniconda是一个小的“引导”版本,只包括conda,Python和它们依赖的包。 超过720个科学软件包及其依赖项可以使用“conda install”命令从Continuum存储库单独安装。
Anaconda包括conda,conda-build,Python和超过150个自动安装的科学包及其依赖项。 与Miniconda一样,可以使用“conda install”命令单独安装超过250个额外的科学软件包。

下载包后会得到一个名为类似“Anaconda2-5.2.0-Linux-x86_64.sh”的文件,使用命令:

$ bash Anaconda2-5.2.0-Linux-x86_64.sh   #Python 2.7版本

即可进行安装,当然如果下载的是其他版本的Anaconda,替换掉安装包名即可。

在安装过程中,首先会给你看许可申明,这里可以一直按回车,不用担心后面会漏掉什么命令。接着会问你是否同意许可,输入yes同意。然后会询问你安装路径,这里建议直接回车安装到默认路径(会在用户根目录下生成一个anaconda2的文件夹,类似 ~/anaconda2)。最后会问你是否将Anaconda安装路径加入到环境变量(.bashrc)中,输入yes,这样以后在终端中输入python即可直接进入Anaconda的Python版本:

$ python --version
Python 2.7.15 :: Anaconda, Inc.

这里由于我原本就安装有Python2.x和Python3.x,担心这里会影响我的原有版本,就输入的no,但这样的话会导致你无法随意通过conda命令来操作anaconda,最后我还是将其加入了环境变量,如果上一步输入了no,可以通过下面的命令将其加入环境变量:

Do you wish the installer to prepend the Anaconda2 install location
to PATH in your /usr/local/app/.bashrc ? [yes|no]
[no] >>> no

You may wish to edit your .bashrc to prepend the Anaconda2 install location to PATH:

export PATH=/usr/local/app/anaconda2/bin:$PATH

Thank you for installing Anaconda2!

$ conda info
Hey! No command 'conda' found, did you mean 'cone'?

$ # 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
$ echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc 
$ source ~/.bashrc  # 更新bashrc以立即生效

$ conda --version 
conda 4.5.4

至此,anaconda安装完毕。

这里再提一嘴conda和anaconda的关系:

这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。

关于Anaconda的常用命令有:

$ # 创建一个名为tensotflow的环境,指定Python版本是2.7(不用管是2.7.x,conda会为我们自动寻找2.7.x中的最新版本)
$ conda create --name tensotflow python=2.7  # 这里的--name可以简化为-n

$ source activate tensotflow  # 安装好后,使用activate激活某个环境
$ # 激活后,会发现terminal输入的地方多了tensotflow 的字样

$ # 此时,可以安装和操作一些包

$ source deactivate tensotflow   # 如果想返回普通环境,运行

$ conda remove --name tensotflow --all  # 删除一个已有的环境


$ # conda的包管理类似pip

$ conda install scipy  # conda安装scipy

$ conda list  # 查看已经安装的packages

$ conda list -n tensotflow   # 查看某个指定环境的已安装包

$ conda search numpy  # 查找package信息

$ conda install -n tensotflow numpy  # 安装某个指定环境的package
$ # 如果不用-n指定环境名称,则被安装在当前活跃环境,也可以通过-c指定通过某个channel安装

$ conda update -n tensotflow numpy  # 更新package

$ conda remove -n tensotflow numpy  # 删除package

安装TensorFlow

现在我们就先创建一个新的Anaconda环境来安装和使用我们的TensorFlow。

首先创建python2.7下的名为tensorlfow的环境:

$ conda create --name tensotflow python=2.7

此时anaconda会检查并提示你需要在虚拟环境安装一些包,输入y确认即可。环境创建好就会提醒你:

# To activate this environment, use:
# > source activate tensorflow
#
# To deactivate an active environment, use:
# > source deactivate

第一个命令用于进入(激活)名为tensorflow的环境,第二个命令用于退出该环境,注意这里我们只是命名该环境为tensorflow,真正的TensorFlow还没安装呢。

现在我们进入该环境并安装TensorFlow。

$ source activate tensorflow
(tensorflow) $ 
$ # 注意进入环境后所有的命令钱都会自带一个(tensorflow)表示你在该环境。

然后我们使用“anaconda search -t conda tensorflow”命令来查询conda有哪些TensorFlow的安装包(其实此时也可以通过TensorFlow官网的各种传统方法安装TensorFlow,但既然我们已经创建了Anaconda,而anaconda本身就是个包管理器,那不如就利用它来方便安装)。输入命令后会出现一大堆安装包版本,类似下面这样:

(tensorflow) $ anaconda search -t conda tensorflow

Using Anaconda API: https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
     Name                      |  Version | Package Types   | Platforms       | Builds    
     ------------------------- |   ------ | --------------- | --------------- | ----------
     GlaxoSmithKline/tensorflow |   0.12.0 | conda           | linux-64        | py27hb0d0e74_0
     HCC/tensorflow            |    1.7.0 | conda           | linux-64        | py34_1, py27_1

会有一个大表格该给你展现,根据你的需求来选择一个即可,比如我选择名为“jjh_ppc64le/tensorflow-gpu”的版本,那么使用命令来查看细节:

(tensorflow) $ anaconda show jjh_ppc64le/tensorflow-gpu
Using Anaconda API: https://api.anaconda.org
Name:    tensorflow-gpu
Summary: TensorFlow is a machine learning library
Access:  public
Package Types:  conda
Versions:
   + 1.1.0
   + 1.2.1

To install this package with conda run:
     conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu

其实上面就已经告诉你怎么安装了,使用最后一行命令即可。

$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu

上面可以看到它其实给出了两个版本,如果想安装其中一个特定版本,可以指定:

$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu=1.1.0

anaconda同样会为你检查你缺少哪些包,并询问你是否安装,输入y确认即可。

至此TensorFlow就安装完成了,如果想检查是否安装成功,可以进入python来import试一试:

(tensorflow) $ python
Python 2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf  # 此时不报错则表示安装成功了
>>> tf.__version__    # 查看安装的TensorFlow版本
'1.10.0'

遨游去吧。


查看作者首页

参考文章:
Anaconda使用总结
Anaconda+Tensorflow环境安装与配置
Conda工具使用

推荐阅读更多精彩内容