依照Python官方的方法手工安裝python和tensorflow以及一個(gè)個(gè)手工安裝眾多的模塊是很麻煩的,也常出現(xiàn)難纏的奇葩問題啄刹。
這個(gè)文章帶領(lǐng)大家完全從零開始利用Anaconda一下子把Python和上百個(gè)科學(xué)計(jì)算模塊都裝好,并且開始用Python真正的編寫代碼凄贩。
Anaconda介紹
Anaconda [?n?'kɑnd?] 水蟒誓军。它是一個(gè)Python語言的免費(fèi)增值發(fā)行版,用于進(jìn)行大規(guī)模數(shù)據(jù)處理, 預(yù)測(cè)分析, 和科學(xué)計(jì)算, 致力于簡化模塊的管理和部署疲扎。
免費(fèi)增值:有免費(fèi)版也有收費(fèi)版昵时,或者軟件免費(fèi)但有內(nèi)購,總之椒丧,發(fā)行者還是希望用戶付錢的壹甥。Anaconda是由Anaconda公司開發(fā)和發(fā)行的,可以完全免費(fèi)使用瓜挽,但該公司還有其他收費(fèi)產(chǎn)品如Anaconda Enterprise(企業(yè)版)和Training(培訓(xùn)與認(rèn)證)等
Python發(fā)行版:由于Python是開源的盹廷,就像小米華為都基于Android安卓開發(fā)了各自的手機(jī)系統(tǒng)一樣征绸,也有很多公司對(duì)Pytho進(jìn)行改造和再包裝久橙,然后免費(fèi)發(fā)行出來或者商業(yè)銷售俄占。當(dāng)然,這些第三方的發(fā)行版或多或少都會(huì)做一些有價(jià)值的改進(jìn)淆衷,否則也就沒有存在的必要了缸榄。常見的Python發(fā)行版除了Anaconda外還有WinPython、Python(x,y)等祝拯,但易用度和流行度都不如Anaconda甚带。
模塊化開發(fā)
我們實(shí)際編程開發(fā)中使用的Python并不僅僅是指從Python官方網(wǎng)站下載的那個(gè)安裝包所帶來的內(nèi)容,也不是僅僅是指使用Python官方的那些編程命令來寫代碼佳头。
我們不會(huì)真的自己親手去寫每一個(gè)功能鹰贵,那樣的話全世界會(huì)有成千上萬的程序員反反復(fù)復(fù)寫著同樣的功能同樣的代碼,——這太浪費(fèi)了康嘉。
我們可以把自己曾經(jīng)寫好的一段代碼重新拿來在新的編程項(xiàng)目里面使用碉输,就好像把一張照片復(fù)制一份放到新的相冊(cè)一樣。同樣我們擴(kuò)大到更多人亭珍,大家把自己寫好的一段段代碼貢獻(xiàn)出來敷钾,互相分享,互相借鑒(復(fù)制)肄梨,這樣一來阻荒,我們真實(shí)的編程開發(fā)就變成了用各種代碼片段來搭積木了。這就是模塊化众羡。
全世界的開發(fā)者已經(jīng)為Python開發(fā)了數(shù)以萬計(jì)的各種模塊侨赡,實(shí)現(xiàn)千變?nèi)f化的功能,我們可以把這些模塊自由組合成各種軟件和程序粱侣。
那么問題也來了辆毡,怎么安裝別人編寫的模塊?安裝后怎么卸載甜害?怎么更新已經(jīng)用到的模塊舶掖?如果Jack開發(fā)的A模塊里面又使用了Tom開發(fā)的B模塊,這種情況又該怎么辦尔店?
我們需要一個(gè)模塊管理工具眨攘,就像手機(jī)的App store應(yīng)用商店那樣來幫我們管理各種各樣的模塊。
在編程領(lǐng)域嚣州,并不會(huì)使用一個(gè)有界面的軟件來做模塊管理鲫售,因?yàn)槌绦騿T們更喜歡直接輸入命令代碼,比如shangdian anzhuang wangzherongyao
(讓應(yīng)用商店安裝一個(gè)王者榮耀)该肴。
在Anaconda中就自帶了這樣一個(gè)模塊管理器情竹,它的名字不叫shangdian,而是叫做conda匀哄,后面我們會(huì)學(xué)到具體怎么召喚它出來干活秦效。
Anaconda的商店還自帶了“模塊全家桶”雏蛮,當(dāng)大家安裝Anaconda的時(shí)候,默認(rèn)就把超過150個(gè)數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)相關(guān)的常用模塊都安裝好阱州,這就讓我們省了很多事挑秉。
下載與安裝
直接進(jìn)入Anaconda官方站點(diǎn)然后點(diǎn)擊右上角【Download】按鈕,進(jìn)入下載頁面之后選擇Windows版本或者M(jìn)acOS蘋果電腦版本苔货,然后點(diǎn)擊左邊Python3.6版本的Download按鈕就會(huì)開始下載了犀概。
因?yàn)橛袛?shù)百個(gè)模塊打包在一起,所以文件比較大夜惭,請(qǐng)慢慢等待姻灶。
也可以從**百度云下載Anaconda5.2的Win/Mac安裝文件 密碼:1jc3
下載后直接安裝,一步一步都使用默認(rèn)選項(xiàng)不修改即可(VS code可以skip跳過)诈茧。
windows下這個(gè)安裝過程可能很慢木蹬,需要十幾分鐘。
安裝完成后若皱,打開命令行工具(windows的Anaconda Prompt[pr?mpt],Mac下使用終端)镊叁,輸入conda info
回車,應(yīng)該得到類似下面的信息走触。
Windows10要使用Anaconda Prompt命工具晦譬,在【所有程序列表-Anaconda3下面】,或者直接在小娜搜索框里輸入Anaconda也可以找到它互广。MacOS直接使用系統(tǒng)的命令行工具在【全部程序-實(shí)用工具-終端】敛腌。
如果你是專業(yè)人士,更多不同版本的安裝包在這里
數(shù)據(jù)科學(xué)全家桶
在命令行工具輸入conda list
然后回車惫皱,在列表中尋找是否有下面幾個(gè)模塊像樊,這些我們?cè)诤竺娑紩?huì)經(jīng)常用到:
- Numpy 基礎(chǔ)的科學(xué)計(jì)算庫,可以用它做各種矩陣運(yùn)算旅敷。
- Pandas 基于Numpy的數(shù)據(jù)分析工具生棍,擅長處理數(shù)據(jù)。
- Scipy 是Python中核心的科學(xué)計(jì)算工具包媳谁,包含了像積分涂滴、插值、統(tǒng)計(jì)晴音、圖像等等很多工具,與Numpy緊密結(jié)合柔纵。
- Scikit-learn 機(jī)器學(xué)習(xí)庫,包含了大量的機(jī)器學(xué)習(xí)算法和數(shù)據(jù)集锤躁,很容易上手使用搁料。
- Matplotlib 知名的圖表繪制工具,用于數(shù)據(jù)可視化幫助我們理解數(shù)據(jù)和監(jiān)視機(jī)器學(xué)習(xí)的過程。
- Seaborn 基于matplotlib的更方便好用的數(shù)據(jù)可視化工具郭计。
使用Conda
conda是模塊管理工具(商店)霸琴,我們先嘗試用它來安裝著名的深度學(xué)習(xí)框架tensorflow。
在終端或者prompt里面輸入命令conda install tensorflow
拣宏,然后會(huì)出現(xiàn)Solving environment
轉(zhuǎn)圈好一會(huì)請(qǐng)耐心等待沈贝,然后出現(xiàn)很多文字表示哪些內(nèi)容將要被下載和安裝:
我們輸入y確認(rèn)開始杠人。然后就會(huì)看到很多下載和安裝進(jìn)度勋乾。過一會(huì)最后會(huì)顯示done
表示完成。
如果遇到出錯(cuò)嗡善,可以重新
conda install tensorflow
再試幾次就會(huì)成功了辑莫。
下面是更多的一些conda命令:
- conda info 查看conda自身的信息
- conda update conda 更新升級(jí)conda自己
- conda install xxx 安裝某個(gè)模塊
- conda update xxx 更新升級(jí)某個(gè)模塊
- conda --help 顯示幫助文字內(nèi)容
- conda list 顯示所有已經(jīng)安裝的模塊
- conda remove xxx 刪除某個(gè)已經(jīng)安裝的模塊
- python --version 顯示python的版本
使用Anaconda navigator
Anaconda還自帶了一個(gè)有界面的工具管理箱Anaconda navigator,如下圖:
在Home里面可以看到各種已經(jīng)安裝的有用的工具罩引,尤其是jupyter lab和jupyter notebook各吨,在后續(xù)我們都會(huì)一直使用,現(xiàn)在你也可以點(diǎn)進(jìn)去看一下袁铐。
Environment環(huán)境里面可以看到我們已經(jīng)安裝的各種模塊揭蜒。
Python版本 :Python這個(gè)編程語言(本質(zhì)也是個(gè)軟件程序)一直在不斷升級(jí)更新,比如我們使用上面的
python --version
看到的版本是3.6.5剔桨,過幾個(gè)月可能就會(huì)升級(jí)到3.6.8甚至3.8屉更、4.0之類。但是洒缀,我們現(xiàn)在寫的代碼是用的3.6.5的標(biāo)準(zhǔn)規(guī)則瑰谜,升級(jí)之后難免會(huì)有些變化,甚至導(dǎo)致我們現(xiàn)在寫的代碼在明年就會(huì)有問題树绩。
模塊版本:當(dāng)然我們編程的時(shí)候還會(huì)引用很多其他人發(fā)布的模塊萨脑,而這些模塊如果升級(jí)了,我們的代碼也可能在模塊的新版本里面就不能正常運(yùn)行饺饭。
Environment環(huán)境:我們編寫的代碼依賴于當(dāng)時(shí)的python版本和所有引用的模塊版本才能正常運(yùn)行渤早,這些版本的約束就是python編程的Environment環(huán)境,如果環(huán)境變了就可能會(huì)出問題瘫俊;同樣如果我們以后要修改以前的舊代碼蛛芥,也要再返回到舊的Environment環(huán)境才能順利修改。如果我們切換不同的環(huán)境军援,conda命令(比如安裝仅淑、刪除等)都會(huì)只針對(duì)這個(gè)環(huán)境來操作。所以我們可以在環(huán)境A使用python2.7的語法編程胸哥,在環(huán)境B使用python3.6的語法涯竟。
Channel渠道:是指conda install命令從哪里下載需要安裝的模塊包。默認(rèn)都是從Anaconda下載的。
Hello world!
學(xué)習(xí)任何編程語言的開始都是從讓計(jì)算機(jī)輸出一行hello world!
文字開始的庐船。
我們從Anaconda navigator的Home打開Jupyter notebook银酬。
Jupyter [?d??pa?t?]是一個(gè)完全生造的詞,可能是從jupiter木星/丘比特一詞演化得到的筐钟。
Jupyter notebook其實(shí)是打開一個(gè)網(wǎng)頁揩瞪,但很像是文件管理器,你可以在這里創(chuàng)建自己的文件篓冲,并編寫代碼李破。
右上角New按鈕可以創(chuàng)建Python3代碼、文字文件或者文件夾壹将。如圖我在桌面Desktop這里創(chuàng)建了一個(gè)Untitled Folder文件夾嗤攻。
點(diǎn)擊文件夾的小圖標(biāo)可以Rename改名。
改名之后點(diǎn)進(jìn)去文件夾诽俯,然后New一個(gè)Python 3文件妇菱。
在輸入框中輸入print('Hello world!')
,然后按【shift+回車】,這行代碼就會(huì)被運(yùn)行暴区,下面顯示出Hello world闯团!
當(dāng)前這個(gè)代碼文件還是叫Untitled,你可以直接點(diǎn)擊上面紅線指示的Untitled文字修改文件名仙粱。返回到剛才的文件夾頁面房交,可以看到這個(gè).ipynb文件。
后續(xù)我們會(huì)使用Jupyter notebook帶領(lǐng)大家一起學(xué)習(xí)Python編程和機(jī)器學(xué)習(xí)的知識(shí)內(nèi)容缰盏。