最省心的Python版本和第三方庫管理——初探Anaconda

說起Python入門第一步,很多人會說是Hello World。殊不知擋在眾多小白同學面前的一座大山便是安裝Python。安裝Python有什麼難的,可要真從2.x和3.x之爭說起,夾雜著諸如Windows下如何安裝lxml庫,如何管理Python 2.x和Python 3.x之類的問題,工作量其實還是不小的。說起來我也是2、3混用了很久,初學時很長一段時間都停留在自帶的idle編輯器,中間也因為編碼問題專門轉到過Ubuntu上去。現在的日常是本地Pycharm+遠程伺服器的Jupter Notebook。

今天寫這篇文章,面向的是電腦里連Python都還沒裝的同學,推薦一種目前就我個人體驗來看,最簡單舒服省心的Python環境配置。當然了,如果電腦里混裝了多版本很頭疼,或者還在用idle+cmd進入Python命令行這樣反人類的入門方式,不妨跟著試一試。

今天的主角是Anaconda,之後會再寫文章詳細介紹Jupyter的配置(本地和伺服器配置,包括Win Server和Linux Server,還有多用戶版本的Jupyterhub配置,當然拖更遙遙無期,急用的同學就自行谷歌,有問題可以私信我…)。

Anaconda是Python的一個開源發行版本,主要面向科學計算。我們可以簡單理解為,Anaconda是一個預裝了很多我們用的到或用不到的第三方庫的Python。而且相比於大家熟悉的pip install命令,Anaconda中增加了conda install命令。當你熟悉了Anaconda以後會發現,conda install會比pip install更方便一些。比如大家經常煩惱的lxml包的問題,在Windows下pip是無法順利安裝的,而conda命令則可以,後面會詳細展示。

Anaconda的官網在這裡Download Anaconda Now!。與Python相對應,Anaconda的版本分為Anaconda2和Anaconda3,大家可以自行下載日常常用的版本,提供32位和64位下載。(2.x和3.x混用的同學也不要擔心,後面我們會講具體的版本管理)

當然了,如果你真的選擇去官網下載Anaconda的話會發現,速度慢到令人髮指;當你等待了30多分鐘下載安裝完以後想要安裝或者更新其中的包時,又會發現其速度慢到會斷開連接安裝報錯…

(劃重點)正確的姿勢是從國內清華大學開源軟體鏡像站進行下載並配置鏡像。

下載地址 Index of /anaconda/archive/

選擇相應的版本進行下載就好(直接找2017年最新版的Anaconda2或Anaconda3)。

下載完成後安裝。C盤不吃緊的同學可以一路next,C盤如果吃緊最好換個地方,日積月累Anaconda會佔用不小的地方…

另由評論區@qwe14789cn指出:

建議作者在文章里加上 anaconda安裝路徑不要出現空格,否則後面坑的不知東南西北

下載過程中除了安裝位置外,還有兩個需要確認的地方。

第一個勾是是否把Anaconda加入環境變數,這涉及到能否直接在cmd中使用conda、jupyter、ipython等命令,推薦打勾,如果不打勾話問題也不大,可以在之後使用Anaconda提供的命令行工具進行操作;第二個是是否設置Anaconda所帶的Python 3.6為系統默認的Python版本,這個自己看著辦,問題不大。

一路安裝完成以後,就可以打開cmd測試一下安裝結果。

分別輸入python、ipython、conda、jupyter notebook等命令,會看到相應的結果,說明安裝成功。(python是進入python交互命令行;ipython是進入ipython交互命令行,很強大;conda是Anaconda的配置命令;jupyter notebook則會啟動Web端的ipython notebook)

需要注意的是jupyter notebook命令會在電腦本地以默認配置啟動jupyter服務,之後會再談到這個。

Anaconda安裝成功之後,我們需要修改其包管理鏡像為國內源

Tsinghua Open Source Mirror

簡單來說就是在cmd中分別運行這兩個命令就好了。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --set show_channel_urls yes

設置好鏡像以後,我們繼續進行環境管理。

因為我現在安裝的是最新版Anaconda3,其自帶的Python版本為3.6,如果我們需要添加2.7版本的Python,可以進行如下操作。(同理,如果有人安裝的是Anaconda2需要添加Python 3.x,之後操作里的2.7改為3.6或3.5即可)

conda create -n py27 python=2.7

其中py27是新添加環境的名字,可以自定義修改。

之後通過activate py27和deactivatepy27命令激活、退出該環境。(Linux和OS系統的命令似乎是source activate和source deactivate)

activate py27

在激活新環境後,我們所做的操作便都是在新環境下的,包括pip命令來安裝第三方庫。我們來試一下pip安裝lxml。

pip install lxml

不出所料…失敗了…如果你執意要自己解決這個問題,會很複雜,至少我在小白階段直接放棄了解決這個問題…

那麼正確的做法是什麼呢?一條命令就夠了。

conda install -n py27 lxml

當然了,對於可以正常安裝的庫,自然可以使用pip命令。

最後,我們可以通過conda info -e命令查看已有的環境。

通過conda remove -n env_name --all來刪除指定的環境(如果不添--all參數,而是指明某個庫名,則是刪除該庫)。

比如我現在要刪除py35這個環境。

彩蛋1

由於我們現在安裝的是Anaconda3,之後又新添加了Python 2.7環境,但是Python 3.6環境中安裝了Anaconda自帶的科學計算環境,Python 2.7中卻沒有,那麼如何為新添加的環境也裝上Anaconda的科學計算包呢,沒必要一個一個來,更沒有必要再去安裝Anaconda2了,只需:

conda install -n py27 anaconda

但是這會安裝非常多,非常多,非常多的包,慎用。

彩蛋2

我們已經說完了Anaconda中的包管理,那麼既然Anaconda中可以使Python 2.x和3.x共存,Jupyter Notebook是否可以呢?

當然可以。

在這裡我們不展開來介紹Jupyter Notebook,因為後面還會專門再寫一篇,大家可以先初步了解。多版本的Python或者R等語言,在Jupyter中被稱作kernel。

如果想要給Jupyter添加多個Python版本的kernel,有兩種做法。

如果這個Python版本已經存在(比如我們剛才添加的py27環境),那麼你可以直接為這個環境安裝ipykernel包。即:

conda install -n py27 ipykernel

然後激活這個環境,輸入

python -m ipykernel install --user

如果所需版本並不是已有的環境,可以直接在創建環境時便為其預裝ipykernel。

如:

conda create -n py27 python=2.7 ipykernel

PS 如果想要在創建新版本環境時直接裝上其他庫,像這裡的ipykernel一樣直接附在後面就可以了。之後同樣是激活環境並添加kernel。

PPS 這個命令生成的其實是一個JSON文件,可以直接查看並修改。

希望大家從此不再因為選擇版本、安裝Python、管理環境、添加第三方庫(能用conda用conda,不能用conda用pip)、選擇IDE(單文件Jupyter,項目組織開Pycharm)等等雜事所困擾,專心於代碼。

(當然了,有一些庫不論conda和pip都無法直接安裝,只能下載.whl,這裡不再贅述了,小白同學遇到這種問題的時候,應該也有能力自己解決這種問題了)

祝進步,祝愉快!遲到的新年快樂!

# 催更只接受打賞…(說的好像有人打賞似的…說的好像有人打賞就會更似的…)

推薦閱讀:

求問為什麼不能合併兩個列表?
python numpy 數組如何對每個元素進行操作?
如何使用pyinstaller打包python腳本?

TAG:Python | Anaconda | Python入门 |