Anaconda基本教程及常用命令(介紹、安裝、基本操作、管理環境、管理包、conda和pip以及藉助pqi換源)

hashell發表於2020-11-29

一、概述

1.Python介紹

Python是一種物件導向的解釋型計算機程式設計語言,可以在Linux、macOS、以及Windows系統中搭配環境並使用,其編寫的程式碼在不同平臺執行時,幾乎不需要做較大改動。

此外,Python強大之處在於它的應用領域範圍遍及人工智慧、科學計算、Web開發、系統運維、大資料及雲端計算、金融、遊戲開發等,實現其強大功能的前提,就是Python具有數量龐大且功能相對完善的第三方庫。通過對庫的引用,能夠實現對不同領域業務的開發。然而,由於庫的數量龐大,這些庫的管理和維護是重要且複雜的事情。

2.Python環境組成

Python環境主要由直譯器和包集合組成。

我們直接安裝一個任意版本的Python,開啟安裝位置的目錄,發現如下圖所示。
在這裡插入圖片描述

(1)Python直譯器

Python直譯器是Python環境的本體,也就是python.exe檔案。我們需要在環境變數的路徑中將python.exe所在的目錄新增上,這樣在終端或者命令列中輸入python指令時,就會預設開啟該目錄下的python.exe檔案。

直譯器根據python的版本分為2和3,python2和python3之間無法相互相容,也就是說用python2寫出的指令碼在python3的直譯器中不一定能夠執行。我們正常裝一個Python,那個版本就已經固定了,如果同時需要2和3,則需要同時裝兩個python。

(2)Python包集合

Python包集合相當於Python的擴充套件功能,它在Lib資料夾內,包括自帶的包和第三方包。其中第三方包可以用pip或者easy_install下載,下載後的包放在Lib資料夾的site-packages下。

當一個python環境中不包含這個包,那麼引用了這個包的程式是不能在該環境下執行的。報錯方式通常是你在import某個模組的時候提示找不到。

3.上述配置Python環境問題所在

(1)Python直譯器版本固定

python2和python3在語法上不相容,我們裝一個python後,版本已經固定。如果我們一直使用的是python3,忽然有個程式必須要在python2環境下執行,那我們就不得不下載一個python2。

而我們就算不需要使用python2,那麼python3.7和python3.6支援的同一個包的版本肯定也還是有差別的,我們可能裝好了python3.7,但是又有個程式包含的包的版本又只支援低版本的python3,那麼我們又得去python官網上找到這個版本的python下載安裝,可以說是非常麻煩了。

退一萬步說,我們非常有耐心,電腦上裝了四五個python版本,但是我們每次執行某個程式的時候都需要檢查這個程式對應的python版本,並且切換python版本我們可能只能通過改變環境變數路徑的方式。

(2)包的管理

當我們將寫好的程式放到另一臺電腦上執行時會遇到缺少相關包的狀況,這時候需要手動一個個下載包。同時,我們還需要在原電腦上查詢原來包的版本。比如從tensorflow1到tensorflow2,它的變動是非常大的。有些程式,我們直接下載預設包的最新版本肯定是行不通的。

(3)環境混亂

我在本地只有一個python環境,那麼所有程式用到的包都只能放在同一個環境中,這是非常混亂的。也許會存在兩個程式用到的同一個包的版本不一樣,這樣我們執行完一個程式再執行另一個程式時,就要先解除安裝這個包再裝上這個包的另一個版本。

我們需要做的是能為每一個python程式都配置一個獨立的環境,這樣每個程式都能在它特定的環境下執行,也不會存在不同程式的包之間互相沖突的情況,因為它們執行的環境互不干擾。當程式開發完以後,我們可以將該程式需要的環境(第三方包)獨立打包出來。

以上這些問題,Anaconda全部都能解決。

二、Anaconda介紹

1.簡介

Anaconda是可以便捷獲取包且對包能夠進行管理,同時對環境可以統一管理的發行版本。Anaconda包含了conda、numpy、matplotlib在內的超過180個科學包及其依賴項。

2.特點

Anaconda具有開源、安裝過程簡單、高效能使用Python語言和免費社群支援的特點,主要基於它擁有conda包、環境管理器和1000+開源庫。我們也可以安裝簡潔版的Miniconda。

3.conda包介紹

(1)適用語言

Python、R、Ruby、Lua、Scala、Java、Javascript、C、C++、FORTRAN

(2)適用平臺

Windows、macOS、Linux(x86/Power8)

(3)用途

①快速安裝、執行和升級包及其依賴項。
②在計算機中便捷地建立、儲存、載入和切換環境。

三、Anaconda安裝

這裡強調一下,我們安裝完Anaconda以後就不要安裝python了,因為Anaconda本身是包含python編輯器以及一些最常用的包的。Anaconda2對應的是python2版本,Anaconda3對應的是python3版本。我們只需要去Anaconda官網(http://www.anaconda.com/products/individual)找到你的作業系統對應的安裝包就可以了。
在這裡插入圖片描述

具體安裝過程大家可以參考這篇部落格。
https://www.jianshu.com/p/62f155eb6ac5

當然,上面說的Anaconda對應的Python版本只是預設主環境的版本,並不是說你只能使用python3.8的直譯器。如果你想用別的版本的直譯器,完全可以建立一個獨立的環境並指定使用該版本,中間也不要你重新下載另一個版本的Anaconda。這部分操作我將在後面說明。

說明:接下來的都是以命令列模式進行操作。macOS和Linux使用者開啟“Terminal”(“終端”)(Crl+Alt+T)。Windows使用者開啟“Anaconda Prompt”或者將Anaconda相關目錄配置到系統環境變數路徑中去。
需要注意的是,如果你又裝了Anaconda又裝了Python,需要確保Anaconda的環境變數路徑要在Python之前,即Anaconda的優先順序更高一點。

四、conda基本操作

1.檢視conda版本

conda --version
conda -V

例如:
在這裡插入圖片描述
終端上以conda版本號的形式顯示當前安裝conda的版本號。這條命令也可以用來驗證conda是否被成功安裝。

2.更新conda至最新版本

conda update conda
conda update anaconda
conda upgrade conda
conda upgrade anaconda

升級Anaconda需要先升級conda,執行命令後,conda會對版本進行比較並且列出可以升級的版本。同時,也會告知使用者相關包也會升級到相應版本。當有新的版本用於升級時,終端會顯示Proceed([y]/n)?,輸入y即可升級。

3.檢視conda幫助資訊

conda --help
conda -h

在這裡插入圖片描述
有一些命令,這裡沒有提及,你們也可以去了解一下。

檢視某一命令的幫助,可以使用

conda create --help
conda update --help

4.解除安裝Anaconda

Linux或macOs:
rm -rf ~/anaconda2
rm -rf ~/anaconda3
Windows:
控制皮膚->程式和功能->解除安裝Anaconda

Linux或macOs刪除Anaconda安裝目錄(選擇對應的2或3版本),最後建議清理一下.bashrc中的Anaconda路徑。

五、管理環境

Anaconda是可以在一個主環境(base)的基礎上建立多個單獨的python環境的,並且能夠對環境進行管理。每個獨立的環境都可以指定需要的直譯器版本以及安裝對應版本的第三方包。

1.建立新環境

conda create --name <env_name> <packages_name>
conda create --N <env_name> <packages_name>

<env_name>是建立的環境名。<package_names>是安裝在該環境中的包名。

安裝指定直譯器的版本號
conda create --name SVM python=3.5

這表示建立一個名為“SVM”的環境,環境中安裝版本為3.5的python直譯器。

在新建立的環境中建立多個包
conda create --name SVM python=3.6 numpy pandas matplotlib

這表示建立一個名為“SVM”的環境,環境中安裝版本為3.5的python直譯器,同時安裝了numpy、pandas和matplotlib。

如果建立環境沒有指定python直譯器版本,那麼會預設安裝與Anaconda版本預設對應的python版本(base主環境的直譯器版本)。新建立的環境會被儲存在anaconda3/env目錄下。

例如:
在這裡插入圖片描述
如圖所示,它會提示相關資訊,並完成環境的建立。

2.顯示已建立環境

conda env list
conda info -e
conda info --envs

在這裡插入圖片描述
這會顯示出你已經建立的python環境,“*”所在行表示當前所在環境,base是預設的主環境。如圖所示,它顯示了剛剛建立的環境“SVM”。

3.啟用/切換環境

Linux或macOS:
source activate <env_name>
conda activate <env_name>
windows:
activate <env_name>

成功切換環境後,該行行首會以“(env_name)”或“[env_name]”開頭。
在這裡插入圖片描述
這就從base環境切換到了SVM環境。

如果想直接切換到base環境,那麼<env_name>為空即可。
在這裡插入圖片描述

4.退出環境至root

Linux或macOS:
source deactivate
conda deactivate
windows:
deactivate <env_name>

在這裡插入圖片描述

執行會退出當前環境至root。再執行activate會重新啟用環境。

回到root環境變數後,原本行首以“(env_name)”或“[env_name]”開頭的字元會不再顯示。

5.複製環境

conda create --name <new_env_name> --clone <copied_env_name>

<copied_env_name>為被複制的環境名,<new_env_name>為複製之後的新環境名。

例如:
在這裡插入圖片描述

這裡我們複製“SVM”的環境給一個新環境“mach”,複製完之後,我們檢視已建立環境,發現同時存在“SVM”和“mach”環境,且兩個環境配置相同。

6.刪除環境

conda remove --name <env_name> --all

<env_name>為被刪除環境的名稱。

例如:
在這裡插入圖片描述
在這裡插入圖片描述
可以發現我們成功刪除了“SVM”環境。

值得說一下的是,我們如果想對一個環境重新命名,可以先將該環境複製給另一個環境,再刪除該環境。結合複製環境和刪除環境的操作,我們實現了將“SVM”環境重新命名“mach”。

六、管理包

1.查詢包

精確查詢:
conda search --full-name <package_full_name>
模糊查詢:
conda search <text>
pip查詢:
pip search <text>

–full-name為精確查詢的引數,<package_full_name>為被查詢包的全名。

是查詢含有此欄位的包名。
例如查詢包tensorflow-gpu的過程:
在這裡插入圖片描述 在這裡插入圖片描述

2.檢視包資訊

ananconda show <package_name>
pip show <package_name>

<package_name>為檢視的包資訊。
在這裡插入圖片描述

3.獲取環境中已安裝的包資訊

檢視當前環境中已安裝的包資訊:
conda list
檢視指定環境中已安裝的包資訊:
conda list --name <env_name>
pip檢視當前環境中已安裝的包資訊:
pip list
pip freeze
pip檢視當前環境中可升級的包資訊:
pip list -o

<env_name>為指定環境名。

例如檢視mach環境中已安裝的包資訊:
在這裡插入圖片描述
conda會顯示安裝包版本以及其依賴項,而pip不會顯示依賴項。

4.安裝包

(1)conda安裝包

在當前環境中安裝包:
conda install <package_name>
在指定環境中安裝包:
conda install --name <env_name> <package_name>
安裝特定版本的包:
conda install <package_name>=version

<env_name>為指定環境名,<package_name>為安裝包名,version為安裝包的版本號。

例如:
因為我們mach環境裡python是3.5版本的,我們想要安裝numpy。我們去conda search numpy獲取包資訊如下:
在這裡插入圖片描述
可以發現支援python3.5的最新numpy版本就是1.15.2,這樣我們可以輸入如下命令進行安裝。
在這裡插入圖片描述在這裡插入圖片描述
安裝完成後我們切入mach環境,開啟直譯器,import numpy沒有報錯說明就安裝成功了。

(2)pip安裝包

pip在當前環境中安裝包:
pip install <package_name>
安裝特定版本的包:
pip install <package_name>=version

當使用conda install無法進行安裝時,可以使用pip進行安裝。

pip只是包管理器,無法對包進行管理。因此如果想在指定環境中使用pip進行安裝包,則需要先切換到指定環境中,再用pip命令安裝。

pip無法更新python,因此pip不能講python視為包。

pip可以安裝一些conda無法安裝的包,conda也可以安裝一些pip無法安裝的包。當使用一種命令無法安裝時,可以嘗試使用另一種命令。

pip安裝包或許直接忽略依賴項而安裝,僅在結果中提示錯誤,conda安裝包自動安裝其依賴項。

(3)從Anaconda.org安裝包

搜尋http://Anaconda.org,開啟主頁面後無需註冊。

在“Anaconda Cloud”上方搜尋欄中輸入要安裝的包名,點選右邊“放大鏡”搜尋圖示。

搜尋結果有非常多的包可供選擇,此時點選“Downloads”根據下載量排序,找到你想要安裝的包,點選就會出現如下頁面(這裡我要下載tensorflow-gpu)。
在這裡插入圖片描述

它有好幾種安裝方法,你可以點選“Files”直接下載安裝包,也可以點選“conda”複製“To install this package with conda run”下方的命令,並貼上到終端中執行。

(4)本地檔案安裝

如果上面方法通通不管用,我們可以下載原始碼安裝,我們可以下載安裝包的exe檔案或者whl檔案。exe檔案直接雙擊開啟,whl檔案在該檔案的目錄下使用如下命令:

pip install 目錄/檔名(......whl)

5.解除安裝包

解除安裝當前環境中的包:
conda remove <package_name>
解除安裝指定環境中的包:
conda remove --name <env_name> <package_name>
pip解除安裝當前環境中的包:
pip uninstall <package_name>

<env_name>為指定環境名,<package_name>為安裝包名。
在這裡插入圖片描述

6.更新包

更新所有包:
conda upgrade --all
conda update --all
更新指定包:
conda upgrade <package_neme>
conda update <package_neme>
pip更新包
pip install -U <package_neme>
pip更新自己
pip install -U pip

<package_neme>為更新的包名。

7.匯入匯出環境中的包

(1)conda匯入匯出包

匯出:
conda env export > environment.yaml
conda list -e > requirements.txt
匯入:
conda env create -f environment.yaml
conda install --yes --file requirements.txt

這可以復現安裝環境。當然,移植過來的環境只是安裝了原來環境裡用conda install等命令直接安裝的包,用pip之類裝的包沒有移植過來,需要重新安裝。
例如:
在這裡插入圖片描述
這裡我們將mach環境的包匯出到environment.yaml中,再把該環境刪除。我們發現桌面上多了environment.yaml檔案,開啟後發現裡面儲存了各個包的版本號及其依賴項。
在這裡插入圖片描述
我們再重新匯入即可。
在這裡插入圖片描述

(2)pip匯入匯出包

匯出:
pip freeze > requirements.txt
匯入:
pip install -r requirements.txt

七、換源

我們有些時候會遇到下載安裝包速度慢的問題,這時候就需要換源。

1.conda換源

(1)常用命令

檢視channels:
conda config --show channels
vim ~/.condarc
新增國內映象源:
conda config --add channels <映象源地址>
conda config --set show_channel_urls yes
移除國內映象源:
conda config --remove channels <映象源地址>
conda自動開啟/關閉啟用base環境:
conda config --set auto_activate_base false
conda config --set auto_activate_base true

(2)可用的國內源

更換清華源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
更換中科大源:
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes
上述方法我們也可以用
vim ~/.condarc
編輯文字,文字中內容如下圖所示

(3)換源操作

安裝清華源操作如下圖所示:
在這裡插入圖片描述
也可以用vim對condarc進行編輯,如下圖所示,儲存即可。有關vim的用法自行搜尋。
在這裡插入圖片描述
我們試著來安裝pandas,發現下載的源是來自清華源,證明換源成功。
在這裡插入圖片描述

2.pip換源

(1)國內常用源

pip國內的一些源:
阿里雲 http://mirrors.aliyun.com/pypi/simple/ 
中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 
豆瓣(douban) http://pypi.douban.com/simple/ 
清華大學 https://pypi.tuna.tsinghua.edu.cn/simple/ 

(2)pip臨時使用

臨時指定pip路徑,無需配置pip源。

pip install pythonModuleName -i <換源地址>
例如:
pip install numpy -i https://mirrors.aliyun.com/pypi/simple

在這裡插入圖片描述

(3)更改pip配置檔案中的源(永久更改)

Linux或macOS:
#建立目錄
mkdir -p ~/.pip
#修改配置檔案
vim  ~/.pip/pip.conf
#寫入以下內容並儲存
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
或者
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/

Windows:
直接在user目錄中建立一個pip目錄,如:C:\Users\xx\pip
新建檔案pip.ini,內容如下
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

(4)使用pqi永久換源(各個作業系統通用,推薦)

安裝pqi
pip install pqi
檢視pqi幫助資訊
pqi
列舉所有支援的pip源
pqi ls
改變pip源(阿里雲)
pqi use aliyun
顯示當前pip源
pqi show
新增新的pip源(如新增ustc源)
pqi add ustc https://mirrors.ustc.edu.cn/pypi/web/simple
移除pip源(如官方PyPi源)
pqi remove pypi

下面是藉助pqi從中科大pip映象下載see包的例子。
在這裡插入圖片描述
參考:
https://www.jianshu.com/p/62f155eb6ac5
https://www.jianshu.com/p/eaee1fadc1e9

相關文章