Anaconda介紹安裝與管理包2018-01-24

Anaconda介紹

  • Anaconda 是一個(gè)包含數(shù)據(jù)科學(xué)常用包的 Python 發(fā)行版本。它基于 conda ——一個(gè)包和環(huán)境管理器——衍生而來(lái)。你將使用 conda 創(chuàng)建環(huán)境,以便分隔使用不同 Python 版本和不同程序包的項(xiàng)目。你還將使用它在環(huán)境中安裝、卸載和更新包。通過使用 Anaconda,處理數(shù)據(jù)的過程將更加愉快。
  • Anaconda 能讓你在數(shù)據(jù)科學(xué)的工作中輕松安裝經(jīng)常使用的程序包。你還將使用它創(chuàng)建虛擬環(huán)境,以便更輕松地處理多個(gè)項(xiàng)目。Anaconda 簡(jiǎn)化了工作流程,并且解決了多個(gè)包和 Python 版本之間遇到的大量問題。
  • Anaconda 實(shí)際上是一個(gè)軟件發(fā)行版,它附帶了 conda、Python 和 150 多個(gè)科學(xué)包及其依賴項(xiàng)。應(yīng)用程序 conda 是包和環(huán)境管理器。Anaconda 的下載文件比較大(約 500 MB),因?yàn)樗綆Я?Python 中最常用的數(shù)據(jù)科學(xué)包。如果只需要某些包,或者需要節(jié)省帶寬或存儲(chǔ)空間,也可以使用 Miniconda 這個(gè)較小的發(fā)行版(僅包含 conda 和 Python)。但你仍可以使用 conda 來(lái)安裝任何可用的包,它只是自身沒有附帶這些包而已。

Jupyter notebook介紹

Jupyter notebook 是一種 Web 文檔,能讓你將文本、圖像和代碼全部組合到一個(gè)文檔中。它事實(shí)上已經(jīng)成為數(shù)據(jù)分析的標(biāo)準(zhǔn)環(huán)境。Jupyter notebook 源自 2011 年的 IPython 項(xiàng)目,之后迅速流行起來(lái)。

pip介紹

Python 庫(kù)的默認(rèn)包管理器
conda 與 pip 相似,不同之處是可用的包以數(shù)據(jù)科學(xué)包為主,而 pip 適合一般用途。與此同時(shí),conda 并非 像 pip 那樣專門適用于 Python,它也可以安裝非 Python 的包。它是支持 任何 軟件的包管理器。也就是說(shuō),雖然并非所有的 Python 庫(kù)都能通過 Anaconda 發(fā)行版和 conda 獲得,但同時(shí)它也支持非 Python 庫(kù)的獲得。在使用 conda 的同時(shí),你仍可以使用 pip 來(lái)安裝包。

conda介紹

  • 除了管理包之外,conda 還是虛擬環(huán)境管理器。它類似于另外兩個(gè)很流行的環(huán)境管理器,即 virtualenvpyenv
  • 環(huán)境能讓你分隔用于不同項(xiàng)目的包。你常常要使用依賴于某個(gè)庫(kù)的不同版本的代碼。例如,你的代碼可能使用了 Numpy 中的新功能,或者使用了已刪除的舊功能。實(shí)際上,不可能同時(shí)安裝兩個(gè) Numpy 版本。你要做的應(yīng)該是,為每個(gè) Numpy 版本創(chuàng)建一個(gè)環(huán)境,然后項(xiàng)目的對(duì)應(yīng)環(huán)境中工作。在應(yīng)對(duì) Python 2 和 Python 3 時(shí),此問題也會(huì)常常發(fā)生。你可能會(huì)使用在 Python 3 中不能運(yùn)行的舊代碼,以及在 Python 2 中不能運(yùn)行的新代碼。同時(shí)安裝兩個(gè)版本可能會(huì)造成許多混亂和錯(cuò)誤,而創(chuàng)建獨(dú)立的環(huán)境會(huì)好很多。你也可以將環(huán)境中的包列表導(dǎo)出為文件,然后將該文件與代碼包括在一起。這能讓其他人輕松加載代碼的所有依賴項(xiàng)。pip 提供了類似的功能,即 pip freeze > requirements.txt

安裝 Anaconda

Anaconda 可用于 Windows、Mac OS X 和 Linux。可以在 https://www.continuum.io/downloads 上找到安裝程序和安裝說(shuō)明。
國(guó)內(nèi)網(wǎng)如果不好的話 可以使用
清華大學(xué)開源軟件鏡像站
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
注:Anaconda3-4.4.0-Windows-x86_64.exe(對(duì)應(yīng)是64位python3.6版本)

如果計(jì)算機(jī)上已經(jīng)安裝了 Python,這不會(huì)有任何影響。實(shí)際上,腳本和程序使用的默認(rèn) Python 是 Anaconda 附帶的 Python。

選擇 Python 3.6 版本(你也可以根據(jù)具體的需要選擇 Python 2 的版本)。此外,如果是 64 位操作系統(tǒng),則選擇 64 位安裝程序,否則選擇 32 位安裝程序。繼續(xù)并選擇合適的版本,然后安裝它。之后,繼續(xù)進(jìn)行!

完成安裝后,會(huì)自動(dòng)進(jìn)入默認(rèn)的 conda 環(huán)境,而且所有包均已安裝完畢,如下面所示。可以在終端或命令提示符中鍵入 conda list,以查看你安裝的內(nèi)容。

在 Windows 上,會(huì)隨 Anaconda 一起安裝一批應(yīng)用程序:

  • Anaconda Navigator,它是用于管理環(huán)境和包的 GUI
  • Anaconda Prompt 終端,它可讓你使用命令行界面來(lái)管理環(huán)境和包
  • Spyder,它是面向科學(xué)開發(fā)的 IDE

為了避免報(bào)錯(cuò),我推薦在默認(rèn)環(huán)境下更新所有的包。打開 Anaconda Prompt (或者 Mac 下的終端),鍵入:

conda upgrade --all

并在提示是否更新的時(shí)候輸入 y(Yes)以便讓更新繼續(xù)。初次安裝下的軟件包版本一般都比較老舊,因此提前更新可以避免未來(lái)不必要的問題。

管理包

安裝了 Anaconda 之后,管理包是相當(dāng)簡(jiǎn)單的。要安裝包,請(qǐng)?jiān)诮K端中鍵入 conda install package_name。例如,要安裝 numpy,請(qǐng)鍵入 conda install numpy

你還可以同時(shí)安裝多個(gè)包。類似 conda install numpy scipy pandas 的命令會(huì)同時(shí)安裝所有這些包。還可以通過添加版本號(hào)(例如 conda install numpy=1.10)來(lái)指定所需的包版本。

Conda 還會(huì)自動(dòng)為你安裝依賴項(xiàng)。例如,scipy 依賴于 numpy,因?yàn)樗褂貌⑿枰?numpy。如果你只安裝 scipy (conda install scipy),則 conda 還會(huì)安裝 numpy(如果尚未安裝的話)。

大多數(shù)命令都是很直觀的。要卸載包,請(qǐng)使用 conda remove package_name。要更新包,請(qǐng)使用 conda update package_name。如果想更新環(huán)境中的所有包(這樣做常常很有用),請(qǐng)使用 conda update --all。最后,要列出已安裝的包,請(qǐng)使用前面提過的 conda list

如果不知道要找的包的確切名稱,可以嘗試使用 conda search search_term 進(jìn)行搜索。例如,我知道我想安裝 Beautiful Soup,但我不清楚確切的包名稱。因此,我嘗試執(zhí)行 conda search beautifulsoup

它返回可用的 Beautiful Soup 包的列表,并列出了相應(yīng)的包名稱 beautifulsoup4

管理環(huán)境

如前所述,你可以使用 conda 創(chuàng)建環(huán)境以隔離項(xiàng)目。要?jiǎng)?chuàng)建環(huán)境,請(qǐng)?jiān)诮K端中使用 conda create -n env_name list of packages。在這里,-n env_name 設(shè)置環(huán)境的名稱(-n 是指名稱),而 list of packages 是要安裝在環(huán)境中的包的列表。例如,要?jiǎng)?chuàng)建名為 my_env 的環(huán)境并在其中安裝 numpy,請(qǐng)鍵入 conda create -n my_env numpy

創(chuàng)建環(huán)境時(shí),可以指定要安裝在環(huán)境中的 Python 版本。這在你同時(shí)使用 Python 2.x 和 Python 3.x 中的代碼時(shí)很有用。要?jiǎng)?chuàng)建具有特定 Python 版本的環(huán)境,請(qǐng)鍵入類似于 conda create -n py3 python=3conda create -n py2 python=2 的命令。實(shí)際上,我在我的個(gè)人計(jì)算機(jī)上創(chuàng)建了這兩個(gè)環(huán)境。我將它們用作與任何特定項(xiàng)目均無(wú)關(guān)的通用環(huán)境,以處理普通的工作(可輕松使用每個(gè) Python 版本)。這些命令將分別安裝 Python 3 和 Python 2 的最新版本。要安裝特定版本(例如 Python 3.3),請(qǐng)使用 conda create -n py python=3.3

進(jìn)入環(huán)境

創(chuàng)建了環(huán)境后,在 OSX/Linux 上使用 source activate my_env 進(jìn)入環(huán)境。在 Windows 上,請(qǐng)使用 activate my_env

進(jìn)入環(huán)境后,你會(huì)在終端提示符中看到環(huán)境名稱,它類似于 (my_env) ~ $。環(huán)境中只安裝了幾個(gè)默認(rèn)的包,以及你在創(chuàng)建它時(shí)安裝的包。你可以使用 conda list 檢查這一點(diǎn)。在環(huán)境中安裝包的命令與前面一樣:conda install package_name。不過,這次你安裝的特定包僅在你進(jìn)入環(huán)境后才可用。要離開環(huán)境,請(qǐng)鍵入 source deactivate(在 OSX/Linux 上)。在 Windows 上,請(qǐng)使用 deactivate

保存和加載環(huán)境

共享環(huán)境這項(xiàng)功能確實(shí)很有用,它能讓其他人安裝你的代碼中使用的所有包,并確保這些包的版本正確。你可以使用 conda env export > environment.yaml 將包保存為 YAML。命令的第一部分 conda env export 用于輸出環(huán)境中的所有包的名稱(包括 Python 版本)。

上圖中,你可以看到環(huán)境的名稱和所有依賴項(xiàng)及其版本。導(dǎo)出命令的第二部分 > environment.yaml 將導(dǎo)出的文本寫入到 YAML 文件 environment.yaml 中。現(xiàn)在可以共享此文件,而且其他人能夠用于創(chuàng)建和你項(xiàng)目相同的環(huán)境。

要通過環(huán)境文件創(chuàng)建環(huán)境,請(qǐng)使用 conda env create -f environment.yaml。這會(huì)創(chuàng)建一個(gè)新環(huán)境,而且它具有同樣的在 environment.yaml 中列出的庫(kù)。

列出環(huán)境

如果忘記了環(huán)境的名稱(我有時(shí)會(huì)這樣),可以使用 conda env list 列出你創(chuàng)建的所有環(huán)境。你會(huì)看到環(huán)境的列表,而且你當(dāng)前所在環(huán)境的旁邊會(huì)有一個(gè)星號(hào)。默認(rèn)的環(huán)境(即當(dāng)你不在選定環(huán)境中時(shí)使用的環(huán)境)名為 root

刪除環(huán)境

如果你不再使用某些環(huán)境,可以使用 conda env remove -n env_name 刪除指定的環(huán)境(在這里名為 env_name)。

最佳做法

使用環(huán)境

對(duì)我?guī)椭艽蟮囊稽c(diǎn)是,我的 Python 2 和 Python 3 具有獨(dú)立的環(huán)境。我使用了 conda create -n py2 python=2conda create -n py3 python=3 創(chuàng)建兩個(gè)獨(dú)立的環(huán)境,即 py2py3。現(xiàn)在,我的每個(gè) Python 版本都有一個(gè)通用環(huán)境。在所有這些環(huán)境中,我都安裝了大多數(shù)標(biāo)準(zhǔn)的數(shù)據(jù)科學(xué)包(numpy、scipy、pandas 等)。

我還發(fā)現(xiàn),為我從事的每個(gè)項(xiàng)目創(chuàng)建環(huán)境很有用。這對(duì)于與數(shù)據(jù)不相關(guān)的項(xiàng)目(例如使用 Flask 開發(fā)的 Web 應(yīng)用)也很有用。

共享環(huán)境

在 GitHub 上共享代碼時(shí),最好同樣創(chuàng)建環(huán)境文件并將其包括在代碼庫(kù)中。這能讓其他人更輕松地安裝你的代碼的所有依賴項(xiàng)。對(duì)于不使用 conda 的用戶,我通常還會(huì)使用 pip freeze在此處了解詳情)將一個(gè) pip requirements.txt 文件導(dǎo)出并包括在其中。

了解更多信息

要詳細(xì)了解 conda 以及它如何融入到 Python 生態(tài)系統(tǒng)中,請(qǐng)查看這篇由 Jake Vanderplas 撰寫的文章:Conda myths and misconceptions(有關(guān) conda 的迷思和誤解)。此外,如果你有空閑精力,也可以參考這篇 conda 文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評(píng)論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,034評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,413評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,165評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,559評(píng)論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,781評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,327評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,084評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,278評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,495評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評(píng)論 1 291
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,010評(píng)論 3 396
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,241評(píng)論 2 375