Win10 下TensorFlow安裝、使用
第零部分 Python本身
首先我們需要從python本身說起, 從根源尋找問題, 我們?cè)谑褂胮ython語(yǔ)言編寫程序之前需要下載一個(gè)python解釋器, 這才是python的本體, 沒了python解釋器, 我們即使寫了無比正確優(yōu)雅的python腳本也沒辦法運(yùn)行, 那這個(gè)解釋器在哪呢.就在你安裝python的地方,比如我的在C:\Users\Acring\AppData\Local\Programs\Python\Python36-32
python.exe, 也就是Python解釋器
除此之外還有個(gè)很重要的東西, Lib, 也就是python包文件, 包括自帶的包和第三方包
Lib目錄如上圖, 這里有python自帶的包, 如筆者常用的日志包logging, 異步包 concurrent, 而所有的第三方包都放在site-packages文件夾里面
了解了這些我們就對(duì)整個(gè)python環(huán)境有了大概的了解, 其實(shí)最關(guān)鍵的, 一個(gè)python環(huán)境中需要有一個(gè)解釋器, 和一個(gè)包集合.
解釋器
解釋器根據(jù)python的版本大概分為2和3. python2和3之間無法互相兼容, 也就是說用python2語(yǔ)法寫出來的腳本不一定能在python3的解釋器中運(yùn)行.
包集合
包集合中包含了自帶的包和第三方包, 第三方包我們一般通過pip或者easy_install來下載, 當(dāng)一個(gè)python環(huán)境中不包含這個(gè)包, 那么引用了這個(gè)包的程序不能在該python環(huán)境中運(yùn)行.
比如說一個(gè)爬蟲腳本用到了第三方的requests包,而另一臺(tái)計(jì)算機(jī)是剛剛裝好原始python的, 也就是說根本沒有任何第三方包, 那么這個(gè)爬蟲腳本是無法在另一臺(tái)機(jī)器上運(yùn)行的.
Anacond提供了包管理,并可以在不同的環(huán)境之間切換
簡(jiǎn)單來說,Anaconda是Python的包管理器和環(huán)境管理器。
Anaconda附帶了一大批常用數(shù)據(jù)科學(xué)包,它附帶了conda、Python和 150 多個(gè)科學(xué)包及其依賴項(xiàng)。因此你可以用Anaconda立即開始處理數(shù)據(jù)。
-
管理包。
Anaconda 是在 conda(一個(gè)包管理器和環(huán)境管理器)上發(fā)展出來的。在數(shù)據(jù)分析中,你會(huì)用到很多第三方的包,而conda(包管理器)可以很好的幫助你在計(jì)算機(jī)上安裝和管理這些包,包括安裝、卸載和更新包。
-
管理環(huán)境。
為什么需要管理環(huán)境呢?比如你在A項(xiàng)目中用到了Python2,而新的項(xiàng)目要求使用Python3,而同時(shí)安裝兩個(gè)Python版本可能會(huì)造成許多混亂和錯(cuò)誤。這時(shí)候conda就可以幫助你為不同的項(xiàng)目建立不同的運(yùn)行環(huán)境。還有很多項(xiàng)目使用的包版本不同,比如不同的pandas版本,不可能同時(shí)安裝兩個(gè)pandas版本。你要做的應(yīng)該是在項(xiàng)目對(duì)應(yīng)的環(huán)境中創(chuàng)建對(duì)應(yīng)的pandas版本。這時(shí)候conda就可以幫你做到。
第一部分 Anaconda介紹、安裝和命令
1- Anaconda的介紹
Anaconda指的是一個(gè)開源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng)。 因?yàn)榘舜罅康目茖W(xué)包,Anaconda 的下載文件比較大(約 531 MB),如果只需要某些包,或者需要節(jié)省帶寬或存儲(chǔ)空間,也可以使用Miniconda這個(gè)較小的發(fā)行版(僅包含conda和 Python)。
Conda是一個(gè)開源的包、環(huán)境管理器,可以用于在同一個(gè)機(jī)器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換
2- Anaconda安裝
首先安裝Anaconda: 這里是從清華鏡像網(wǎng)站下載的
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
我選擇下載的版本
Anaconda3-5.3.1-Windows-x86_64.exe
安裝注意事項(xiàng):安裝目錄最好不要有空格;是否把Anaconda加入環(huán)境變量的選項(xiàng)上打勾,這涉及到能否直接在cmd中使用conda、jupyter、ipython等命令;如果不打勾可以再安裝以后將對(duì)應(yīng)的環(huán)境變量添加上去
配置環(huán)境變量
如果是windows的話需要去 控制面板\系統(tǒng)和安全\系統(tǒng)\高級(jí)系統(tǒng)設(shè)置\環(huán)境變量\用戶變量\PATH 中添加 anaconda的安裝目錄的Scripts文件夾, 比如我的路徑是C:\ProgramData\Anaconda2\Scripts, 看個(gè)人安裝路徑不同需要自己調(diào)整.
(可能還要添加Anaconda的路徑)
環(huán)境變量配置
將以下路徑添加到系統(tǒng)環(huán)境變量中
D:\ProgramData\Anaconda3;
D:\ProgramData\Anaconda3\Scripts;
D:\ProgramData\Anaconda3\Library\mingw-w64\bin;
D:\ProgramData\Anaconda3\Library\usr\bin;
D:\ProgramData\Anaconda3\Library\bin;
之后就可以打開命令行(最好用管理員模式打開) 輸入 conda --version
如果輸出conda 4.5.4之類的就說明環(huán)境變量設(shè)置成功了.
為了避免可能發(fā)生的錯(cuò)誤, 我們?cè)诿钚休斎隿onda upgrade --all 先把所有工具包進(jìn)行升級(jí)
如果之前安裝了Python,
-
安裝好了以后,可以在cmd中輸入 Python,發(fā)現(xiàn)顯示的還是你之前安裝的版本,像我的就是Python2.7,這是因?yàn)槟阒鞍惭bPython2,7的時(shí)候,是將它的安裝目錄添加到了環(huán)境變量中的。在系統(tǒng)環(huán)境變量中找到對(duì)應(yīng)之前安裝Python的路徑并刪除,像我的就是D:\Program Files\python2.7 和D:\Program Files\python2.7\Scripts。將其刪除。
接著重啟電腦,再在cmd中輸入python 就會(huì)顯示是Anaconda自帶的版本了。
4. 將原來python加入Anoconda中
在Anoconda中,用戶以后安裝的python會(huì)存放在envs中。如果在cmd中輸入conda info -e 或者 conda info --envs 就可以得到你安裝的python信息。 在考察一下conda中安裝其他包的命令:
創(chuàng)建一個(gè)名為python34的環(huán)境,指定Python版本是3.4(不用管是3.4.x,conda會(huì)為我們自動(dòng)尋找3.4.x中的最新版本)
conda create --name python34 python=3.4
其實(shí)就是在envs中創(chuàng)建了一個(gè)python34的文件夾,這個(gè)也就是安裝python34的一個(gè)安裝目錄。了解這個(gè)原理之后,就可以輕松將原來的環(huán)境轉(zhuǎn)到Aconda進(jìn)行管理。
直接將你原來安裝python的整個(gè)文件夾拷貝到envs的目錄下。
然后你再用conda info -e 命令,就會(huì)發(fā)現(xiàn)多了一個(gè)你添加的文件夾的名字的python,我把自己之前安裝的python2.7的包拷過去。還可以給文件下重命名一下,我命名的是python27。
conda environments:
python27 * D:\Anaconda3\envs\python27
root D:\Anaconda3
Anaconda安裝成功之后,我們需要修改其包管理鏡像為國(guó)內(nèi)源。
簡(jiǎn)單來說就是在cmd中分別運(yùn)行這兩個(gè)命令就好了。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
設(shè)置Anaconda鏡像,加速下載包
使用conda install 包名 安裝需要的Python非常方便,但是官方的服務(wù)器在國(guó)外,因此下載速度很慢,國(guó)內(nèi)清華大學(xué)提供了Anaconda的倉(cāng)庫(kù)鏡像,我們只需要配置Anaconda的配置文件,添加清華的鏡像源,然后將其設(shè)置為第一搜索渠道即可cmd命令行下分別執(zhí)行以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/c
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/`
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
配置完后可以測(cè)試一下,安裝第三方包明顯神速了
設(shè)置好鏡像以后,我們繼續(xù)進(jìn)行環(huán)境管理。
3- Anaconda 命令和使用
常用命令
activate // 切換到base環(huán)境
activate learn // 切換到learn環(huán)境
conda create -n learn python=3 // 創(chuàng)建一個(gè)名為learn的環(huán)境并指定python版本為3(的最新版本)
conda env list // 列出conda管理的所有環(huán)境
conda list // 列出當(dāng)前環(huán)境的所有包
conda install requests 安裝requests包
conda remove requests 卸載requets包
conda remove -n learn --all // 刪除learn環(huán)境及下屬所有包
conda update requests 更新requests包
conda env export > environment.yaml // 導(dǎo)出當(dāng)前環(huán)境的包信息
conda env create -f environment.yaml // 用配置文件創(chuàng)建新的虛擬環(huán)境
一些例子和使用
環(huán)境管理
4. 將原來python加入Anoconda中
在Anoconda中,用戶以后安裝的python會(huì)存放在envs中。如果在cmd中輸入conda info -e 或者 conda info --envs 就可以得到你安裝的python信息。 在考察一下conda中安裝其他包的命令:
創(chuàng)建一個(gè)名為python34的環(huán)境,指定Python版本是3.4(不用管是3.4.x,conda會(huì)為我們自動(dòng)尋找3.4.x中的最新版本)
conda create --name python34 python=3.4
其實(shí)就是在envs中創(chuàng)建了一個(gè)python34的文件夾,這個(gè)也就是安裝python34的一個(gè)安裝目錄。了解這個(gè)原理之后,就可以輕松將原來的環(huán)境轉(zhuǎn)到Aconda進(jìn)行管理。
直接將你原來安裝python的整個(gè)文件夾拷貝到envs的目錄下。
然后你再用conda info -e 命令,就會(huì)發(fā)現(xiàn)多了一個(gè)你添加的文件夾的名字的python,我把自己之前安裝的python2.7的包拷過去。還可以給文件下重命名一下,我命名的是python27。
conda environments:
python27 * D:\Anaconda3\envs\python27
root D:\Anaconda3
5.環(huán)境管理
安裝好后,使用activate激活某個(gè)環(huán)境
activate python34 # for Windows
source activate python34 # for Linux & Mac
激活后,會(huì)發(fā)現(xiàn)terminal輸入的地方多了python34的字樣,實(shí)際上,此時(shí)系統(tǒng)做的事情就是把默認(rèn)2.7環(huán)境從PATH中去除,再把3.4對(duì)應(yīng)的命令加入PATH
此時(shí),再次輸入
python --version
可以得到Python 3.4.5 :: Anaconda 4.1.1 (64-bit)
,即系統(tǒng)已經(jīng)切換到了3.4的環(huán)境
如果想返回默認(rèn)的python 2.7環(huán)境,運(yùn)行
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac
刪除一個(gè)已有的環(huán)境
conda remove --name python34 --all
可以使用上面的激活命令檢驗(yàn)一下:
在cmd中輸入python得到自帶版本信息,然后再激活python27,顯示(python27) C:\Users\UT> 也就是搞定了。
C:\Users\UT>python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1
900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
exit()
C:\Users\UT>activate python27
(python27) C:\Users\UT>
設(shè)置國(guó)內(nèi)鏡像命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
然后你的.condarc 文件應(yīng)該是這樣的內(nèi)容,或者你可以直接修改該文件的內(nèi)容設(shè)置鏡像。
channels:
show_channel_urls: yes
設(shè)置Anaconda鏡像,加速下載包
使用conda install 包名 安裝需要的Python非常方便,但是官方的服務(wù)器在國(guó)外,因此下載速度很慢,國(guó)內(nèi)清華大學(xué)提供了Anaconda的倉(cāng)庫(kù)鏡像,我們只需要配置Anaconda的配置文件,添加清華的鏡像源,然后將其設(shè)置為第一搜索渠道即可cmd命令行下分別執(zhí)行以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/c
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/`
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
共享環(huán)境
共享環(huán)境非常有用,它能讓其他人安裝你代碼中使用的所有包,并確保這些包的版本正確。比如你開發(fā)了一個(gè)系統(tǒng),你要提交給項(xiàng)目部署系統(tǒng)的人來部署你的項(xiàng)目,但是他們并不知道你當(dāng)時(shí)開發(fā)時(shí)使用的是哪個(gè)python版本,以及使用了哪些包和包的版本。這怎么辦呢?你可以在你當(dāng)前的環(huán)境的終端中使用:
將你當(dāng)前的環(huán)境保存到文件中包保存為YAML文件
conda env export > environment.yaml
將你當(dāng)前的環(huán)境保存到文件中包保存為YAML文件(包括Pyhton版本和所有包的名稱)。命令的第一部分 conda env export 用于輸出環(huán)境中的所有包的名稱(包括 Python 版本)。你在終端中上可以看到導(dǎo)出的環(huán)境文件路徑。在 GitHub 上共享代碼時(shí),最好同樣創(chuàng)建環(huán)境文件并將其包括在代碼庫(kù)中。這能讓其他人更輕松地安裝你的代碼的所有依賴項(xiàng)。
導(dǎo)出的環(huán)境文件,在其他電腦環(huán)境中如何使用呢?
首先在conda中進(jìn)入你的環(huán)境,比如conda activate python27。然后在使用以下命令更新你的環(huán)境:
其中-f表示你要導(dǎo)出文件在本地的路徑,所以/path/to/environment.yml要換成你本地的實(shí)際路徑
conda env update -f=/path/to/environment.yml
對(duì)于不使用conda 的用戶,我們通常還會(huì)使用以下命令將一個(gè) txt文件導(dǎo)出并包括在其中:
pip freeze > environment.txt
然后我將該文件包含在項(xiàng)目的代碼庫(kù)中,其他項(xiàng)目成員即使在他的電腦上沒有安裝conda也可以使用該文件來安裝和我一樣的開發(fā)環(huán)境:
他在自己的電腦上進(jìn)入python命令環(huán)境,然后運(yùn)行以下命令就可以安裝該項(xiàng)目需要的包:
1. #其中C:\Users\Microstrong\enviroment.txt是該文件在你電腦上的實(shí)際路徑。
2. pip install -r C:\Users\Microstrong\enviroment.txt
4- Anaconda 深入一下
或許你會(huì)覺得奇怪為啥anaconda能做這些事, 他的原理到底是什么, 我們來看看anaconda的安裝目錄
這里只截取了一部分, 但是我們和本文章最開頭的python環(huán)境目錄比較一下, 可以發(fā)現(xiàn)其實(shí)十分的相似, 其實(shí)這里就是base環(huán)境. 里面有著一個(gè)基本的python解釋器, lLib里面也有base環(huán)境下的各種包文件.
那我們自己創(chuàng)建的環(huán)境去哪了呢, 我們可以看見一個(gè)envs, 這里就是我們自己創(chuàng)建的各種虛擬環(huán)境的入口, 點(diǎn)進(jìn)去看看
可以發(fā)現(xiàn)我們之前創(chuàng)建的learn目錄就在下面, 再點(diǎn)進(jìn)去
activate 能將我們引入anaconda設(shè)定的虛擬環(huán)境中, 如果你后面什么參數(shù)都不加那么會(huì)進(jìn)入anaconda自帶的base環(huán)境,
你可以輸入python試試, 這樣會(huì)進(jìn)入base環(huán)境的python解釋器, 如果你把原來環(huán)境中的python環(huán)境去除掉會(huì)更能體會(huì)到, 這個(gè)時(shí)候在命令行中使用的已經(jīng)不是你原來的python而是base環(huán)境下的python.而命令行前面也會(huì)多一個(gè)(base) 說明當(dāng)前我們處于的是base環(huán)境下。
這不就是一個(gè)標(biāo)準(zhǔn)的python環(huán)境目錄嗎?
這么一看, anaconda所謂的創(chuàng)建虛擬環(huán)境其實(shí)就是安裝了一個(gè)真實(shí)的python環(huán)境, 只不過我們可以通過activate,conda等命令去隨意的切換我們當(dāng)前的python環(huán)境, 用不同版本的解釋器和不同的包環(huán)境去運(yùn)行python腳本.
5- Anaconda拓展(其它常用庫(kù) & IDE)
與JetBrains PyCharm連接
在工作環(huán)境中我們會(huì)集成開發(fā)環(huán)境去編碼, 這里推薦JB公司的PyCharm, 而PyCharm也能很方便的和anaconda的虛擬環(huán)境結(jié)合
在Setting => Project => Project Interpreter 里面修改 Project Interpreter , 點(diǎn)擊齒輪標(biāo)志再點(diǎn)擊Add Local為你某個(gè)環(huán)境的python.exe解釋器就行了
比如你要在learn環(huán)境中編寫程序, 那么就修改為C:\Users\Administrator\AppData\Local\conda\conda\envs\learn, 可以看到這時(shí)候下面的依賴包也變成了learn環(huán)境中的包了.接下來我們就可以在pycharm中愉快的編碼了。
下面為大家介紹一下Python庫(kù)的安裝方法
在cmd中輸入:pip list 可以查看安裝的庫(kù)
在所有程序里面可以看到安裝的組件,有Anaconda管理器(Anaconda Command Prompt),IPython Notebook,IPython QT,IPython,Spyder。點(diǎn)擊IPython,進(jìn)入IPython的界面。
可以在cmd中輸入pip list 或者在Anaconda管理器中輸入conda list來查看已經(jīng)安裝的庫(kù)
Anaconda Navigtor :用于管理工具包和環(huán)境的圖形用戶界面,后續(xù)涉及的眾多管理命令也可以在 Navigator 中手工實(shí)現(xiàn)。
Jupyter notebook :基于web的交互式計(jì)算環(huán)境,可以編輯易于人們閱讀的文檔,用于展示數(shù)據(jù)分析的過程。
qtconsole :一個(gè)可執(zhí)行 IPython 的仿終端圖形界面程序,相比 Python Shell 界面,qtconsole 可以直接顯示代碼生成的圖形,實(shí)現(xiàn)多行代碼輸入執(zhí)行,以及內(nèi)置許多有用的功能和函數(shù)。
-
spyder :一個(gè)使用Python語(yǔ)言、跨平臺(tái)的、科學(xué)運(yùn)算集成開發(fā)環(huán)境。
4\. 將原來python加入Anoconda中 在Anoconda中,用戶以后安裝的python會(huì)存放在envs中。如果在cmd中輸入conda info -e 或者 conda info --envs 就可以得到你安裝的python信息。 在考察一下conda中安裝其他包的命令:
創(chuàng)建一個(gè)名為python34的環(huán)境,指定Python版本是3.4(不用管是3.4.x,conda會(huì)為我們自動(dòng)尋找3.4.x中的最新版本)
conda create --name python34 python=3.4
其實(shí)就是在envs中創(chuàng)建了一個(gè)python34的文件夾,這個(gè)也就是安裝python34的一個(gè)安裝目錄。了解這個(gè)原理之后,就可以輕松將原來的環(huán)境轉(zhuǎn)到Aconda進(jìn)行管理。
直接將你原來安裝python的整個(gè)文件夾拷貝到envs的目錄下。
然后你再用conda info -e 命令,就會(huì)發(fā)現(xiàn)多了一個(gè)你添加的文件夾的名字的python,我把自己之前安裝的python2.7的包拷過去。還可以給文件下重命名一下,我命名的是python27。
conda environments:
python27 * D:\Anaconda3\envs\python27
root D:\Anaconda3
5.環(huán)境管理
安裝好后,使用activate激活某個(gè)環(huán)境
activate python34 # for Windows
source activate python34 # for Linux & Mac
激活后,會(huì)發(fā)現(xiàn)terminal輸入的地方多了python34的字樣,實(shí)際上,此時(shí)系統(tǒng)做的事情就是把默認(rèn)2.7環(huán)境從PATH中去除,再把3.4對(duì)應(yīng)的命令加入PATH
此時(shí),再次輸入
python --version
可以得到Python 3.4.5 :: Anaconda 4.1.1 (64-bit)
,即系統(tǒng)已經(jīng)切換到了3.4的環(huán)境
如果想返回默認(rèn)的python 2.7環(huán)境,運(yùn)行
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac
刪除一個(gè)已有的環(huán)境
conda remove --name python34 --all
可以使用上面的激活命令檢驗(yàn)一下:
在cmd中輸入python得到自帶版本信息,然后再激活python27,顯示(python27) C:\Users\UT> 也就是搞定了。
C:\Users\UT>python
Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1
900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
exit()
C:\Users\UT>activate python27
(python27) C:\Users\UT>
6.設(shè)置國(guó)內(nèi)鏡像命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
然后你的.condarc 文件應(yīng)該是這樣的內(nèi)容,或者你可以直接修改該文件的內(nèi)容設(shè)置鏡像。
channels:
show_channel_urls: yes