引
眾所周知Python常用的版本有2.x和3.x,常常會(huì)引起版本問題。由于我在Linux系統(tǒng)中已經(jīng)安裝有Python3.x和對(duì)應(yīng)的TensorFlow,現(xiàn)在遇到需要跑在Python2.x下的TensorFlow工程時(shí),就很麻煩,因此可以用Anaconda來建立一個(gè)獨(dú)立的小環(huán)境來另外安裝Python2.x及其對(duì)應(yīng)的TensorFlow來跑這個(gè)工程。
Anaconda
Anaconda(官網(wǎng))是什么?其實(shí)就是一個(gè)“開源包管理系統(tǒng)和環(huán)境管理系統(tǒng)”,主要用于解決我遇到的上述問題,需要安裝多個(gè)版本的軟件包及其依賴關(guān)系,并在它們之間輕松切換。它適用于Linux,OS X和Windows,是為Python程序創(chuàng)建的,但可以打包和分發(fā)任何軟件。所以雖然我這里主要用于Python,但其實(shí)也可以用于其他很多環(huán)境。
對(duì)應(yīng)于Python2和Python3,Anaconda也有兩種版本,分別為Anaconda2和Anaconda3。兩個(gè)版本可以在官網(wǎng)很方便地下載到安裝包:

選擇系統(tǒng)后下載對(duì)應(yīng)的包即可,如果不確定自己的系統(tǒng)情況,可以通過命令查看:
$ uname -a
其實(shí)還有一種體積更小的版本叫做Miniconda,區(qū)別在于:
Miniconda是一個(gè)小的“引導(dǎo)”版本,只包括conda,Python和它們依賴的包。 超過720個(gè)科學(xué)軟件包及其依賴項(xiàng)可以使用“conda install”命令從Continuum存儲(chǔ)庫(kù)單獨(dú)安裝。
Anaconda包括conda,conda-build,Python和超過150個(gè)自動(dòng)安裝的科學(xué)包及其依賴項(xiàng)。 與Miniconda一樣,可以使用“conda install”命令單獨(dú)安裝超過250個(gè)額外的科學(xué)軟件包。
下載包后會(huì)得到一個(gè)名為類似“Anaconda2-5.2.0-Linux-x86_64.sh”的文件,使用命令:
$ bash Anaconda2-5.2.0-Linux-x86_64.sh #Python 2.7版本
即可進(jìn)行安裝,當(dāng)然如果下載的是其他版本的Anaconda,替換掉安裝包名即可。
在安裝過程中,首先會(huì)給你看許可申明,這里可以一直按回車,不用擔(dān)心后面會(huì)漏掉什么命令。接著會(huì)問你是否同意許可,輸入yes同意。然后會(huì)詢問你安裝路徑,這里建議直接回車安裝到默認(rèn)路徑(會(huì)在用戶根目錄下生成一個(gè)anaconda2的文件夾,類似 ~/anaconda2)。最后會(huì)問你是否將Anaconda安裝路徑加入到環(huán)境變量(.bashrc)中,輸入yes,這樣以后在終端中輸入python即可直接進(jìn)入Anaconda的Python版本:
$ python --version
Python 2.7.15 :: Anaconda, Inc.
這里由于我原本就安裝有Python2.x和Python3.x,擔(dān)心這里會(huì)影響我的原有版本,就輸入的no,但這樣的話會(huì)導(dǎo)致你無法隨意通過conda命令來操作anaconda,最后我還是將其加入了環(huán)境變量,如果上一步輸入了no,可以通過下面的命令將其加入環(huán)境變量:
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,根據(jù)版本不同,也可能是~/anaconda3/bin
$ echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc # 更新bashrc以立即生效
$ conda --version
conda 4.5.4
至此,anaconda安裝完畢。
這里再提一嘴conda和anaconda的關(guān)系:
這里先解釋下conda、anaconda這些概念的差別。conda可以理解為一個(gè)工具,也是一個(gè)可執(zhí)行命令,其核心功能是包管理與環(huán)境管理。包管理與pip的使用類似,環(huán)境管理則允許用戶方便地安裝不同版本的python并可以快速切換。Anaconda則是一個(gè)打包的集合,里面預(yù)裝好了conda、某個(gè)版本的python、眾多packages、科學(xué)計(jì)算工具等等,所以也稱為Python的一種發(fā)行版。其實(shí)還有Miniconda,顧名思義,它只包含最基本的內(nèi)容——python與conda,以及相關(guān)的必須依賴項(xiàng),對(duì)于空間要求嚴(yán)格的用戶,Miniconda是一種選擇。
關(guān)于Anaconda的常用命令有:
$ # 創(chuàng)建一個(gè)名為tensotflow的環(huán)境,指定Python版本是2.7(不用管是2.7.x,conda會(huì)為我們自動(dòng)尋找2.7.x中的最新版本)
$ conda create --name tensotflow python=2.7 # 這里的--name可以簡(jiǎn)化為-n
$ source activate tensotflow # 安裝好后,使用activate激活某個(gè)環(huán)境
$ # 激活后,會(huì)發(fā)現(xiàn)terminal輸入的地方多了tensotflow 的字樣
$ # 此時(shí),可以安裝和操作一些包
$ source deactivate tensotflow # 如果想返回普通環(huán)境,運(yùn)行
$ conda remove --name tensotflow --all # 刪除一個(gè)已有的環(huán)境
$ # conda的包管理類似pip
$ conda install scipy # conda安裝scipy
$ conda list # 查看已經(jīng)安裝的packages
$ conda list -n tensotflow # 查看某個(gè)指定環(huán)境的已安裝包
$ conda search numpy # 查找package信息
$ conda install -n tensotflow numpy # 安裝某個(gè)指定環(huán)境的package
$ # 如果不用-n指定環(huán)境名稱,則被安裝在當(dāng)前活躍環(huán)境,也可以通過-c指定通過某個(gè)channel安裝
$ conda update -n tensotflow numpy # 更新package
$ conda remove -n tensotflow numpy # 刪除package
安裝TensorFlow
現(xiàn)在我們就先創(chuàng)建一個(gè)新的Anaconda環(huán)境來安裝和使用我們的TensorFlow。
首先創(chuàng)建python2.7下的名為tensorlfow的環(huán)境:
$ conda create --name tensotflow python=2.7
此時(shí)anaconda會(huì)檢查并提示你需要在虛擬環(huán)境安裝一些包,輸入y確認(rèn)即可。環(huán)境創(chuàng)建好就會(huì)提醒你:
# To activate this environment, use:
# > source activate tensorflow
#
# To deactivate an active environment, use:
# > source deactivate
第一個(gè)命令用于進(jìn)入(激活)名為tensorflow的環(huán)境,第二個(gè)命令用于退出該環(huán)境,注意這里我們只是命名該環(huán)境為tensorflow,真正的TensorFlow還沒安裝呢。
現(xiàn)在我們進(jìn)入該環(huán)境并安裝TensorFlow。
$ source activate tensorflow
(tensorflow) $
$ # 注意進(jìn)入環(huán)境后所有的命令錢都會(huì)自帶一個(gè)(tensorflow)表示你在該環(huán)境。
然后我們使用“anaconda search -t conda tensorflow”命令來查詢conda有哪些TensorFlow的安裝包(其實(shí)此時(shí)也可以通過TensorFlow官網(wǎng)的各種傳統(tǒng)方法安裝TensorFlow,但既然我們已經(jīng)創(chuàng)建了Anaconda,而anaconda本身就是個(gè)包管理器,那不如就利用它來方便安裝)。輸入命令后會(huì)出現(xiàn)一大堆安裝包版本,類似下面這樣:
(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
會(huì)有一個(gè)大表格該給你展現(xiàn),根據(jù)你的需求來選擇一個(gè)即可,比如我選擇名為“jjh_ppc64le/tensorflow-gpu”的版本,那么使用命令來查看細(xì)節(jié):
(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
其實(shí)上面就已經(jīng)告訴你怎么安裝了,使用最后一行命令即可。
$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu
上面可以看到它其實(shí)給出了兩個(gè)版本,如果想安裝其中一個(gè)特定版本,可以指定:
$ conda install --channel https://conda.anaconda.org/jjh_ppc64le tensorflow-gpu=1.1.0
anaconda同樣會(huì)為你檢查你缺少哪些包,并詢問你是否安裝,輸入y確認(rèn)即可。
至此TensorFlow就安裝完成了,如果想檢查是否安裝成功,可以進(jìn)入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 # 此時(shí)不報(bào)錯(cuò)則表示安裝成功了
>>> tf.__version__ # 查看安裝的TensorFlow版本
'1.10.0'
遨游去吧。
參考文章:
Anaconda使用總結(jié)
Anaconda+Tensorflow環(huán)境安裝與配置
Conda工具使用