1. 程式人生 > >我也曾經因安裝庫而抓狂,直到我遇到了Anaconda

我也曾經因安裝庫而抓狂,直到我遇到了Anaconda

幾乎所有的 Python 學習者都遇到過“安裝”方面的問題。這些安裝問題包括 Python 自身環境的安裝、第三方模組的安裝、不同版本的切換,以及不同平臺、版本間的相容問題等。當你因為這些問題而卡殼,一行程式碼沒寫就已瘋,相信我,你不是一個人……包括我自己,也是這麼被坑過來的。

我自己印象最深的是在 Mac 上安裝 pycrypto(加密)和 scipy(科學計算)模組,折騰了很久。因為這類模組並不是單純的 Python 程式碼,而是需要呼叫諸如 C 語言的庫,於是就牽涉到在不同平臺上的編譯,有些還不能很方便地用虛擬環境分離版本。在數次嘗試失敗之後,最終靠著一樣工具竟輕鬆搞定。這就是今天要介紹的:

Anaconda

應該有不少人已經瞭解和在使用中,另外也考慮到先 Mark 以後需要時再看的收藏黨,這裡先給個“嫌長不想看”版:

  1. Anaconda 就是一個擴充套件版 Python,最直接的好處是幫你打包好了一整套資料科學相關的 Python 庫,一次安裝就可以擁有資料分析、數值計算、資料視覺化、機器學習常用的幾十個庫,不用擔心安裝不成功、版本不匹配等問題,省時省心。

  2. Anaconda 的核心是 conda 這個包/環境管理器,類似於我們之前介紹過的虛擬環境 virtualenv,且功能更豐富。裝了 Anaconda,同時也就可以使用 conda 來管理電腦上不同版本的 Python 環境。

  3. 如果對 conda 的使用不熟悉也沒關係。Anaconda 還附帶了一個叫做 Navigator(導航)的桌面 GUI 工具,可以直觀的建立和管理環境,安裝、刪除擴充套件包

  4. Anaconda 安裝後,附帶了 Jupyter 和 Spyder 兩種 IDE。Jupyter 是一種基於瀏覽器的互動式開發環境,這種邊開發邊執行的模式很適合編寫資料科學類的程式。Spyder 的介面和 Matlab 很相似。不過如果你對 PyCharm 已經熟悉,也可以直接通過設定 interpreter(直譯器)路徑來直接使用 Anaconda 的環境。

主要就是這幾點,如果你在使用中遇到過什麼問題,歡迎在文字下方留言討論。有其他想法或者想聽的內容,也歡迎告訴我們。


 

Anaconda 這個詞,字面意思和 Python 類似,都是大蟒蛇。系列電影《狂蟒之災》的主角就是這玩意兒。美國著名嘻哈歌手麻辣雞(Nicki Minaj)有首歌就叫《Anaconda》(本文的封面,小孩子不要去搜)。這個專案命名其實很形象:Anaconda 就是一種更大的 Python

再做個類比:安裝了 Python 就像買了個毛坯房,雖然刷了塗料通了水電(內建庫),但你真的想住進去,還得自己根據需要進行裝修(安裝各種第三方庫)。而 Anaconda 就是個精裝修。這個精裝是面向資料科學的,同時也保留了你自己進一步改裝的空間。

官網上有一個 Anaconda 支援庫的列表:

http://docs.anaconda.com/anaconda/packages/pkg-docs/

裡面有很多熟悉的面孔(挑了其中幾個常見的):

打鉤的是包含在安裝包中,未打鉤的需要後續手動安裝。資料分析必備的 numpy、pandas、scipy、matplotlib 自不用說,像資料採集的 requestsbeautifulsoup、scapy,Web 開發的 flask,GUI 的 pyqt,影象處理的 pillow,機器學習 scikit-learn,都直接幫你裝好了。就連 vs2015_runtime 這種也為你貼心附上,被坑過的同學應該都懂。

唯一的缺點大概就是這樣會比較佔空間。但既然你都下決心深入 Python 開發了,這也就是少裝一個遊戲的空間吧。

如果你安裝 Anaconda 的話,是不必裝 Python 的,因為它本身包含了 Python 的環境,避免了版本不匹配的問題。Windows、Mac、Linux 三個平臺都支援,直接從官網下載安裝即可。(建議選擇最新版)

https://www.anaconda.com/download/

正常按提示安裝沒有太大問題,網上的安裝示例也一搜一大把,這裡不贅述。Windows 建議安裝時右鍵點選,選擇“以管理員身份執行”。

安裝好之後,檢查下你的 Python 是否已經是 Anaconda 環境下的了。(從提示中可以看出)

這時候,你可以通過 conda 來管理你的安裝包和環境。使用方法和我們之前介紹過的virtualenv 類似(參見《為什麼你的python版本一團糟?因為少了這個操作》)。常用的命令有

  • conda list:檢視環境中的所有包

  • conda install XXX:安裝 XXX 包

  • conda remove XXX:刪除 XXX 包

  • conda env list:列出所有環境

  • conda create -n XXX:建立名為 XXX 的環境

  • conda env remove -n XXX:刪除指定環境

  • activate XXX(或 source activate XXX):啟用 XXX 環境

  • deactivate(或 source deactivate):退出環境

同 pip 一樣,如果使用 conda 安裝很慢,可以通過修改國內源的方式來加速。修改C:\Users\當前使用者名稱\.condarc(非 Windows 是 ~/.condarc),加入如下配置:

channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 - defaults
show_channel_urls: true

Anaconda 的又一貼心之處在於,給了你一個叫做 Anaconda Navigator 的桌面 GUI 工具,把上述 conda 的功能都做成了點選按鈕就可以完成的事情。

包管理和環境管理都一目瞭然。

資料科學庫、包/環境管理、Navigator 工具,這幾樣就是 Anaconda 的主要功能。

另外值得一提的是:Anaconda 是附帶了一系列第三方庫的 Python 以及對這些庫的管理工具,和我們之前說的 PyCharm 不是一類東西。PyCharm 是 IDE,用來寫程式碼的編輯器。你可以把 Anaconda 作為執行環境放在 PyCharm 裡使用。只要你建立專案的時候選擇已經配置好的 Anaconda 環境即可。關於 PyCharm 的具體配置可以在公眾號(Crossin的程式設計教室)裡回覆關鍵字 pycharm

而 Anaconda 預設附帶的另一個開發工具 Jupyter,也是非常值得推薦的。你可以從 Navigator 裡執行,或者在命令列執行命令:

jupyter notebook

 

它是一個基於瀏覽器的互動式開發工具。跟 Python 自帶的互動環境相比,它的自動完成和提示功能都強大許多,並且你不用再糾結不能在互動環境裡寫多行程式碼的問題。

這種程式碼分塊,可以邊開發邊執行的模式,非常適合編寫爬蟲、資料處理、資料分析等資料科學類的程式。我之前的很多案例都是使用它來開發,你們看到專案程式碼中的.ipynb 檔案就是可以匯入 Jupyter 的檔案。另外它還有個好處,就是可以部署在自己的伺服器上使用(當然這也有安全風險),這樣只要有網路,你就能隨時隨地寫 Python 了。

不管是 Anaconda 還是 Jupyter,以及之前推薦多次的 PyCharm,到底好不好用,是不是適合你,自己試過了才知道。花點時間裝起來用一下,然後歡迎你回來報告使用體驗。