1. 程式人生 > >Anaconda 完全入門指南

Anaconda 完全入門指南

Anaconda 使用指南

Anaconda 是 Python 的一個開源發行版本。anaconda 裡面集成了很多關於 python 科學計算的第三方庫,主要面向科學計算且安裝方便,而 python 是一個編譯器,如果不使用 anaconda,那麼安裝起來會比較痛苦,各個庫之間的依賴性就很難連線的很好。Anaconda 提供一個管理工具 conda ,可以把 conda 看作是 pip + virtualenv +PVM (Python Version Manager) + 一些必要的底層庫,也就是一個更完整也更大的整合管理工具。在我看來主要優點是預裝了很多第三方庫,而且Anaconda中增加了conda install命令,安裝新package格外方便,還自帶

Spyder IDE 和Jupyter Notebook

概述

很多學習python的初學者甚至學了有一段時間的人接觸到anaconda或者其他虛擬環境工具時覺得無從下手, 其主要原因就是不明白這些工具究竟有什麼用, 是用來做什麼的, 為什麼要這麼做, 比如筆者一開始也是不明白為啥除了python之外我還需要這麼一個東西, 他和python到底有啥聯絡和區別, 為啥能用來管理python.

在使用過之後我才逐漸發現其實anaconda等環境管理工具究竟在做啥, 以及為什麼我們需要他們來管理我們的python環境

首先我們需要先去了解Anaconda誕生的目的.再去了解Anaconda的使用方法.

Python本身

首先我們需要從python本身說起, 從根源尋找問題, 我們在使用python語言編寫程式之前需要下載一個python直譯器, 這才是python的本體, 沒了python直譯器, 我們即使寫了無比正確優雅的python指令碼也沒辦法執行, 那這個直譯器在哪呢.就在你安裝python的地方,比如我的在C:\Users\Acring\AppData\Local\Programs\Python\Python36-32

image.png

專案結構如上圖,這裡有我們很熟悉的python.exe, 也就是Python直譯器

除此之外還有個很重要的東西, Lib, 也就是python包檔案, 包括自帶的包和第三方包

Lib資料夾

\

Lib目錄如上圖, 這裡有python自帶的包, 如筆者常用的日誌包logging, 非同步包 concurrent, 而所有的第三方包都放在site-packages資料夾裡面

瞭解了這些我們就對整個python環境有了大概的瞭解, 其實最關鍵的, 一個python環境中需要有一個直譯器, 和一個包集合.

直譯器

直譯器根據python的版本大概分為2和3. python2和3之間無法互相相容, 也就是說用python2語法寫出來的指令碼不一定能在python3的直譯器中執行.

包集合

包集合中包含了自帶的包和第三方包, 第三方包我們一般通過pip或者easy_install來下載, 當一個python環境中不包含這個包, 那麼引用了這個包的程式不能在該python環境中執行.

比如說一個爬蟲指令碼用到了第三方的requests包,而另一臺計算機是剛剛裝好原始python的, 也就是說根本沒有任何第三方包, 那麼這個爬蟲指令碼是無法在另一臺機器上執行的.

問題所在

python環境解釋完了, 那麼接下來就要說明這樣的環境究竟產生哪些問題, 因為anaconda正式為了解決這些問題而誕生的

  1. 到底該裝 Python2 呢還是 Python3

python2和python3在語法上是不相容的, 那我的機器上應該裝python2還是python3呢, 可能一開始選一個學習就好了, 但是如果你要開發的程式必須使用python2而不能使用python3,那這時候你就不得不再下載一個python2, 那這時候環境變數該設誰的目錄呢, 如果還是切換環境變數豈不是很麻煩.

  1. 包管理

如果我在本地只有一個python環境那我所有程式用到的各種包都只能放到同一個環境中, 導致環境混亂, 另外當我將寫好的程式放到另一電腦上執行時又會遇到缺少相關包, 需要自己手動一個個下載的情況, 實在是煩人, 要是能每個程式開發都選用不同的環境, 而開發好之後又能將該程式需要的環境(第三方包)都獨立打包出來就好了.

Anaconda

那麼接下來就到我們的anaconda上場了, 先讓我們安裝好Anaconda然後我再來告訴你如何用Anaconda一個個解決我們上面的問題吧.

下載

官網下載

推薦下載python3版本, 畢竟未來python2是要停止維護的. 

下載地址:https://www.anaconda.com/download/

Anaconda 是跨平臺的,有 Windows、macOS、Linux 版本

安裝

按照安裝程式提示一步步安裝就好了, 安裝完成之後會多幾個應用

  • Anaconda Navigtor :用於管理工具包和環境的圖形使用者介面,後續涉及的眾多管理命令也可以在 Navigator 中手工實現。
  • Jupyter notebook :基於web的互動式計算環境,可以編輯易於人們閱讀的文件,用於展示資料分析的過程。
  • qtconsole :一個可執行 IPython 的仿終端圖形介面程式,相比 Python Shell 介面,qtconsole 可以直接顯示程式碼生成的圖形,實現多行程式碼輸入執行,以及內建許多有用的功能和函式。
  • spyder :一個使用Python語言、跨平臺的、科學運算整合開發環境。

暫時先不用管, 瞭解一下就行了

配置環境變數

如果是windows的話需要去 控制面板\系統和安全\系統\高階系統設定\環境變數\使用者變數\PATH 中新增 anaconda的安裝目錄的Scripts資料夾, 比如我的路徑是D:\Software\Anaconda\Scripts, 看個人安裝路徑不同需要自己調整.

之後就可以開啟命令列(最好用管理員模式開啟) 輸入 conda --version

如果輸出conda 4.4.11之類的就說明環境變數設定成功了.

為了避免可能發生的錯誤, 我們在命令列輸入conda upgrade --all 先把所有工具包進行升級

管理虛擬環境

接下來我們就可以用anaconda來建立我們一個個獨立的python環境了.接下來的例子都是在命令列操作的,請開啟你的命令列吧.

activate

activate 能將我們引入anaconda設定的虛擬環境中, 如果你後面什麼引數都不加那麼會進入anaconda自帶的base環境,

你可以輸入python試試, 這樣會進入base環境的python直譯器, 如果你把原來環境中的python環境去除掉會更能體會到, 這個時候在命令列中使用的已經不是你原來的python而是base環境下的python.而命令列前面也會多一個(base) 說明當前我們處於的是base環境下.

activate

建立自己的虛擬環境

我們當然不滿足一個base環境, 我們應該為自己的程式安裝單獨的虛擬環境.

建立一個名稱為learn的虛擬環境並指定python版本為3(這裡conda會自動找3中最新的版本下載)

conda create -n learn python=3

image.png

於是我們就有了一個learn的虛擬環境, 接下來我們切換到這個環境, 一樣還是用activae命令 後面加上要切換的環境名稱

切換環境

activate learn

如果忘記了名稱我們可以先用

conda env list

去檢視所有的環境

現在的learn環境除了python自帶的一些官方包之外是沒有其他包的, 一個比較乾淨的環境我們可以試試

先輸入python開啟python直譯器然後輸入

>>> import requests

會報錯找不到requests包, 很正常.接下來我們就要演示如何去安裝requests包

exit()

退出python直譯器

安裝第三方包

輸入

conda install requests

或者

pip install requests

來安裝requests包.

安裝完成之後我們再輸入python進入直譯器並import requests包, 這次一定就是成功的了.

解除安裝第三方包

那麼怎麼解除安裝一個包呢

conda remove requests

或者

pip uninstall requests

就行啦.

檢視環境包資訊

要檢視當前環境中所有安裝了的包可以用

conda list 

匯入匯出環境

如果想要匯出當前環境的包資訊可以用

conda env export > environment.yaml

將包資訊存入yaml檔案中.

當需要重新建立一個相同的虛擬環境時可以用

conda env create -f environment.yaml

其實命令很簡單對不對, 我把一些常用的在下面給出來, 相信自己多打兩次就能記住

activate // 切換到base環境

activate learn // 切換到learn環境

conda create -n learn python=3 // 建立一個名為learn的環境並指定python版本為3(的最新版本)

conda env list // 列出conda管理的所有環境

conda list // 列出當前環境的所有包

conda install requests 安裝requests包

conda remove requests 解除安裝requets包

conda remove -n learn --all // 刪除learn環境及下屬所有包

conda update requests 更新requests包

conda env export > environment.yaml // 匯出當前環境的包資訊

conda env create -f environment.yaml // 用配置檔案建立新的虛擬環境

深入一下

或許你會覺得奇怪為啥anaconda能做這些事, 他的原理到底是什麼, 我們來看看anaconda的安裝目錄

image.png

這裡只截取了一部分, 但是我們和本文章最開頭的python環境目錄比較一下, 可以發現其實十分的相似, 其實這裡就是base環境. 裡面有著一個基本的python直譯器, lLib裡面也有base環境下的各種包檔案.

那我們自己建立的環境去哪了呢, 我們可以看見一個envs, 這裡就是我們自己建立的各種虛擬環境的入口, 點進去看看

image.png

可以發現我們之前建立的learn目錄就在下面, 再點進去

image.png

這不就是一個標準的python環境目錄嗎?

這麼一看, anaconda所謂的建立虛擬環境其實就是安裝了一個真實的python環境, 只不過我們可以通過activate,conda等命令去隨意的切換我們當前的python環境, 用不同版本的直譯器和不同的包環境去執行python指令碼.

與pycharm連線

在工作環境中我們會整合開發環境去編碼, 這裡推薦JB公司的pycharm, 而pycharm也能很方便的和anaconda的虛擬環境結合

Setting => Project => Project Interpreter 裡面修改 Project Interpreter , 點選齒輪標誌再點選Add Local為你某個環境的python.exe直譯器就行了

image.png

比如你要在learn環境中編寫程式, 那麼就修改為D:\Software\Anaconda\envs\learn, 可以看到這時候下面的依賴包也變成了learn環境中的包了.接下來我們就可以在pycharm中愉快的編碼了.

Anaconda 初體驗

按下 Windows 徽標鍵,調出 Windows 開始選單,可以看到 “最近新增”的:Anaconda2(64-bit)

Anaconda Prompt
開啟Anaconda Prompt,這個視窗和doc視窗一樣的,輸入命令就可以控制和配置python,最常用的是conda命令,這個pip的用法一樣,此軟體都集成了,你可以直接用,點開的話如下圖。用命令“conda list”檢視已安裝的包,從這些庫中我們可以發現NumPy,SciPy,Matplotlib,Pandas,說明已經安裝成功了!

還可以使用conda命令進行一些包的安裝和更新

conda list:列出所有的已安裝的packages

conda install name:其中name是需要安裝packages的名字,比如,我安裝numpy包,輸入上面的命令就是“conda install numpy”。單詞之間空一格,然後回車,輸入y就可以了。

安裝完anaconda,就相當於安裝了Python、IPython、整合開發環境Spyder、一些包等等。你可以在Windows下的cmd下檢視:

Anaconda Navigtor

用於管理工具包和環境的圖形使用者介面,後續涉及的眾多管理命令也可以在 Navigator 中手工實現。

Jupyter notebook

基於web的互動式計算環境,可以編輯易於人們閱讀的文件,用於展示資料分析的過程。

Qtconsole

一個可執行 IPython 的仿終端圖形介面程式,相比 Python Shell 介面,qtconsole 可以直接顯示程式碼生成的圖形,實現多行程式碼輸入執行,以及內建許多有用的功能和函式。

Spyder

一個使用Python語言、跨平臺的、科學運算整合開發環境。

點選 Anaconda Navigator ,第一次啟用,會初始化,耐心等待一段時間,載入完成,介面如圖。

Spyder編輯器,我們以後就可以用這款編輯器來編寫程式碼,它最大優點就是模仿MATLAB的“工作空間”。spyder.exe放在安裝目錄下的Scripts裡面,如我的是C:\ProgramData\Anaconda2\Scripts\spyder.exe, 直接雙擊就能執行。我們可以右鍵傳送到桌面快捷方式,以後執行就比較方便了。

我們簡單編寫一個程式來測試一下安裝是否成功,該程式用來開啟一張圖片並顯示。首先準備一張圖片,然後開啟spyder,編寫如下程式碼:

# -*- coding: utf-8 -*-

"""
Spyder Editor
This is a temporary script file.
"""

from skimage import io

img = io.imread('C:/Users/Administrator/Desktop/379283176280170726.jpg')
io.imshow(img)

將其中的C:/Users/Administrator/Desktop/379283176280170726.jpg改成你自己要顯示圖片的位置,然後點選上面工具欄裡的綠色三角進行執行,最終顯示如下:

jupyterlab 

我們點選 jupyterlab 下面的 Launch ,會在預設瀏覽器(我這裡是 Chrome)開啟 http://localhost:8888/lab 這樣一個東東,這裡就可以輸入 Python 程式碼啦,來一句 Hello World 吧。

我們可以開啟 Anaconda Navigator -> Launch jupyterlab ,也可以直接在瀏覽器輸入 http://localhost:8888/lab (可以儲存為書籤)。如果是佈置在雲端,可以輸入伺服器域名(IP),是不是很爽?
 

VSCode

Visual Studio Code是一個輕量級但功能強大的原始碼編輯器,可在桌面上執行,適用於Windows,macOS和Linux。它內建了對JavaScript,TypeScript和Node.js的支援,併為其他語言(如C ++,C#,Java,Python,PHP,Go)和執行時(如.NET和Unity)提供了豐富的擴充套件生態系統。

Glueviz

Glue是一個Python庫,用於探索相關資料集內部和之間的關係。其主要特點包括:

連結統計圖形。使用Glue,使用者可以建立資料的散點圖,直方圖和影象(2D和3D)。膠水專注於刷牙和連結範例,其中任何圖形中的選擇傳播到所有其他圖形。

靈活地跨資料鏈接。Glue使用不同資料集之間存在的邏輯連結來覆蓋不同資料的視覺化,並跨資料集傳播選擇。這些連結由使用者指定,並且是任意靈活的。

完整的指令碼功能。Glue是用Python編寫的,並且建立在其標準科學庫(即Numpy,Matplotlib,Scipy)之上。使用者可以輕鬆地整合他們自己的python程式碼進行資料輸入,清理和分析。

Orange3

互動式資料視覺化

通過巧妙的資料視覺化執行簡單的資料分析。探索統計分佈,箱形圖和散點圖,或深入瞭解決策樹,層次聚類,熱圖,MDS和線性投影。即使您的多維資料也可以在2D中變得合理,特別是在智慧屬性排名和選擇方面。

老師和學生都喜歡它

在教授資料探勘時,我們喜歡說明而不是僅僅解釋。而橙色很棒。Orange在世界各地的學校,大學和專業培訓課程中使用,支援資料科學概念的實踐培訓和視覺插圖。甚至還有專門為教學設計的小部件。

附加元件擴充套件功能

使用Orange中可用的各種附加元件從外部資料來源挖掘資料,執行自然語言處理和文字挖掘,進行網路分析,推斷頻繁專案集並執行關聯規則挖掘。此外,生物資訊學家和分子生物學家可以使用Orange通過差異表達對基因進行排序並進行富集分析。

結語

現在你是不是發現用上anaconda就可以十分優雅簡單的解決上面所提及的單個python環境所帶來的弊端了呢, 而且也明白了其實這一切的實現並沒有那麼神奇.

當然anaconda除了包管理之外還在於其豐富資料分析包, 不過那就是另一個內容了, 我們先學會用anaconda去換一種方法管裡自己的開發環境, 這已經是一個很大的進步了.