引
众所周知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。两个版本可以在官网很方便地下载到安装包:
官网下载安装包
选择系统后下载对应的包即可,如果不确定自己的系统情况,可以通过命令查看:
代码语言:javascript复制$ 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”的文件,使用命令:
代码语言:javascript复制$ bash Anaconda2-5.2.0-Linux-x86_64.sh #Python 2.7版本
即可进行安装,当然如果下载的是其他版本的Anaconda,替换掉安装包名即可。
在安装过程中,首先会给你看许可申明,这里可以一直按回车,不用担心后面会漏掉什么命令。接着会问你是否同意许可,输入yes同意。然后会询问你安装路径,这里建议直接回车安装到默认路径(会在用户根目录下生成一个anaconda2的文件夹,类似 ~/anaconda2)。最后会问你是否将Anaconda安装路径加入到环境变量(.bashrc)中,输入yes,这样以后在终端中输入python即可直接进入Anaconda的Python版本:
代码语言:javascript复制$ python --version
Python 2.7.15 :: Anaconda, Inc.
这里由于我原本就安装有Python2.x和Python3.x,担心这里会影响我的原有版本,就输入的no,但这样的话会导致你无法随意通过conda命令来操作anaconda,最后我还是将其加入了环境变量,如果上一步输入了no,可以通过下面的命令将其加入环境变量:
代码语言:javascript复制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的常用命令有:
代码语言:javascript复制$ # 创建一个名为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的环境:
代码语言:javascript复制$ conda create --name tensotflow python=2.7
此时anaconda会检查并提示你需要在虚拟环境安装一些包,输入y确认即可。环境创建好就会提醒你:
代码语言:javascript复制# To activate this environment, use:
# > source activate tensorflow
#
# To deactivate an active environment, use:
# > source deactivate
第一个命令用于进入(激活)名为tensorflow的环境,第二个命令用于退出该环境,注意这里我们只是命名该环境为tensorflow,真正的TensorFlow还没安装呢。
现在我们进入该环境并安装TensorFlow。
代码语言:javascript复制$ source activate tensorflow
(tensorflow) $
$ # 注意进入环境后所有的命令钱都会自带一个(tensorflow)表示你在该环境。
然后我们使用“anaconda search -t conda tensorflow”命令来查询conda有哪些TensorFlow的安装包(其实此时也可以通过TensorFlow官网的各种传统方法安装TensorFlow,但既然我们已经创建了Anaconda,而anaconda本身就是个包管理器,那不如就利用它来方便安装)。输入命令后会出现一大堆安装包版本,类似下面这样:
代码语言:javascript复制(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”的版本,那么使用命令来查看细节:
代码语言:javascript复制(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
其实上面就已经告诉你怎么安装了,使用最后一行命令即可。
代码语言:javascript复制$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu
上面可以看到它其实给出了两个版本,如果想安装其中一个特定版本,可以指定:
代码语言:javascript复制$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu=1.1.0
anaconda同样会为你检查你缺少哪些包,并询问你是否安装,输入y确认即可。
至此TensorFlow就安装完成了,如果想检查是否安装成功,可以进入python来import试一试:
代码语言:javascript复制(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工具使用