作者:HELO 出處:http://www.cnblogs.com/HELO-K 歡迎轉載, 轉載時請保留此聲明, 謝謝!
# Conda/Miniconda/Anaconda 介紹
1. Conda/Miniconda/Anaconda 之間的關系
Conda: 你可以從官方文檔找到對Conda的介紹, Conda是一個適用於任何語言的軟件包/依賴項/環境管理工具, 而不僅僅是python的包/環境管理工具. Conda可以讓用戶更輕松方便的安裝/運行/更新軟件包, 方便的創建/保存/加載/切換虛擬環境.
Anaconda/Miniconda是打包好的Conda安裝程序, 可以幫你一鍵安裝 Python + Conda + 一些軟件包, 不同之處在於Anaconda同時打包了1500個常用的軟件包, 可以一次性安裝到你到python環境中, 這樣你就不用再一個個安裝軟件包了, 對新手非常友好. 而Miniconda一個最小的python+conda安裝程序, 只包含了最必要的包.
2. 我該選擇Anaconda還是Miniconda?
如果你是新手, 不要猶豫, 請直接安裝Anaconda, 這樣你就不需要在環境配置上花費太多時間, 安裝即用, 專心把精力花在python學習上吧. 當然, 因為Anaconda附帶了大量的庫, 所以Anaconda安裝過程會比較久, 安裝后也會占用較大的空間(幾個G), 但請相信, 安裝過程的時間成本相比自行配置安裝環境的成本要低多了.
如果你使用Anaconda已經有一段時間了, 對conda的命令都已經熟悉, 那就可以試一下Miniconda了, 只安裝自己需要的包. 此外在一些需要部署的場合, 安裝幾個G的Anaconda也是不現實的, 並且很多庫都用不上, 此時使用Miniconda就是一個更合適的選擇.
3. 為什么要切換虛擬環境呢? 只用一個環境不行嗎?
不行的, python的軟件包數量眾多, 版本更新迅速, 但不同包以及不同版本的包對其他軟件包的依賴情況可能不同. 所以在不同的項目中我們可能需要給項目配置不同的環境, 比方說有的項目要在python2.7下運行, 有些要在python3.6, 有的要使用opencv3, 有的要使用opencv4. 因此我們需要一個工具能幫我們方便的創建/管理虛擬環境, 於是Conda應運而生, 成為在這方面最流行的一個工具.
# Miniconda/Anaconda 安裝
因為網上已經有大量的一張圖一張圖的安裝教程, 這里我就不詳細介紹了, 只說一些需要注意的點.
1. 從官網下載 Miniconda 或者 Anaconda 安裝包, 建議選擇python3, 64位的版本.
2. windows版安裝過程中有一個頁面問你是否把conda "add to path", 見下圖, 這里這個選項正如選項下方所說, 不建議勾選, 勾選之后容易出現一些問題, 反正我是真的遇到了. 但不在這里勾選, 我們依舊需要在系統的環境變量里手動添加環境變量.

3. 添加環境變量: 打開開始菜單, 直接輸入環境變量, 應該就能看到環境變量的選項了, 見下圖, 這樣啟動方式比較快. 然后在環境變量中添加下面3行,同樣見圖片中的步驟說明.需要添加的內容為:
C:\xxxx\yyy\Anaconda3
C:\xxxx\yyy\Anaconda3\Script
C:\xxxx\yyy\Anaconda3\Library\bin
注意:
(1). 這3行內容對應的就是anaconda/miniconda安裝文件夾所在位置, 添加環境變量后, 可讓系統檢索到conda的可執行文件, 便於全局調用.
(2). 對於miniconda上述內容請改為miniconda3, 此處僅為舉例.
(3). 對於第三行內容, 大多數教程都沒有添加, 但我在實際使用中遇到過包無法安裝/更新的情況, 添加這個環境變量就解決了. 所以第三行可選, 在遇到問題是可嘗試加上.


4. Conda 命令行初始化. conda安裝后, 運行 conda activate xxx 切換環境時, 可能會報如下錯誤, 正如報錯中的說明, conda 需要對當前的命令行環境初始化才能使用, 請根據你所使用的命令行工具來進行初始化, 輸入命令如 conda init powershell 或者 conda init bash. 輸入之后, 重啟命令行即可.

初始化完成之后, 正常情況下, 每條命令前會顯示當前的conda環境, 見下圖, "py36" 是我建的一個環境.

# Conda 使用的經驗之談
todo 待更
# Conda 常用命令
在這里整理一份全一點的 Conda 常用命令, 方便大家日常使用時參考, 一些命令也加入了一些針對初學者的更詳細介紹, 大佬請忽略.
本文會不斷更新, 記得使用頁面搜索來找需要的命令哦, 對了, 網頁端在某一行連續三擊似乎可以選中當前行, 方便復制.
如果發現了錯誤, 歡迎指出, 我會盡快修改.
# conda 添加國內源
# 添加國內源/通道, 默認源在國外, 國內訪問較慢, 建議添加國內源, 下載更新能節省很多時間, 以下為清華的源, 比較常用
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 設置安裝時顯示源地址, 方便安裝時知道包來自哪個源
conda config --set show_channel_urls yes
# 查看 conda 基本信息
# 查看 conda 版本信息 conda info # 更新 conda 版本 conda update -n base conda
# conda 環境相關, 新建/激活/切換/刪除
# 列出所有環境
conda env list
# 新建環境 # 新建一個名為 ENVNAME 的python版本為3.6的 conda create --name ENVNAME python=3.6
# 這里 --name 可以縮寫為 -n,所以下面這個用法更常用, 下文同樣會使用這種縮寫方式,查看所有的縮寫 conda create -n ENVNAME python=3.6 # 也可在創建環境的同時安裝一些包,也可以同時指定包的版本, 如 conda create -n ENVNAME python=3.7 numpy=1.16.4 matplotlib
# 激活/切換環境
# 激活名為 ENVNAME 的環境 conda activate ENVNAME
# 激活特定路徑的環境,筆者注: 這個命令偶爾會用 conda activate /path/to/environment-dir
# 關閉當前環境,筆者注: 如果不在繼續使用此命令行窗口,直接關閉該窗口靜即可 # 關閉環境后面不需要指定環境名,默認關閉當前環境 conda deactivate
# 刪除環境, 筆者注: 也可以直接刪掉 anaconda 安裝目錄下 envs 里面的對應文件夾
conda remove -n ENVNAME --all
# 復制環境, 筆者注: 不可通過復制 anaconda 安裝目錄下 envs 下的文件夾來復制環境, 因為這樣的操作不會自己改變此環境里的配置信息, 對復制后的環境的操作會影響到原環境
# 復制 ENVNAME1, 新環境命名為 ENVNAME2
conda create -n ENVNAME2 --clone ENVNAME1
# 重命名, 目前沒有直接重命名的命令, 需要先 clone 再 remove 舊環境
conda create -n ENVNAME2 --clone ENVNAME1
conda remove -n ENVNAME1 --all
# 包管理相關
# 列出當前環境已安裝的所有包 conda list
# 列出指定環境的所有包 conda list -n ENVNAME
# 列出當前環境變化的版本歷史, 筆者注: 這個版本記錄類似與git的記錄, 記錄你每次的包管理操作后環境記錄 # 筆者注: 這個命令關鍵時候可以救命, 比方說你手賤升級了某個環境, 發現有問題想回滾到之前的環境狀態時 conda list --revisions
# 同上, 列出指定環境的包管理變化的版本歷史 conda list --name ENVNAME --revisions
# 結合上面兩個命令使用, 先通過上面的命令列出所有版本, 然后通過下面這個命令會退到某個版本 conda install -n ENVNAME --revision REV_NUMBER
# 刪除某個環境, 還有一個比較暴力的方式就是直接刪除anaconda安裝路徑下的 envs/ENVNAME 文件夾 conda remove -n ENVNAME --all
# 環境共享相關
# 復制指定環境 conda create --clone ENVNAME --name NEWENV
# 導出指定環境到YAML文件 (便於在另一台電腦上導入以恢復同樣的環境) conda env export --name ENVNAME > envname.yml
# 從YAML文件創建環境 conda env create --file envname.yml
# 如果當前目錄下有 environment.yml 文件, 也不輸入文件名直接創建環境,如下: conda env create
# 導出當前環境的包版本列表 conda list --explicit > pkgs.txt
#或者使用下面命令導出更簡單的包列表 conda list -e > pkgs.txt
# 基於包版本清單創建環境
conda create --name NEWENV --file pkgs.txt
# Packages(包)和Channels(源/通道)的使用
# 添加 Channels conda config --add channels CHANNELNAME
# 使用conda從已配置的Channels中搜索包, 可以帶上版本號, 筆者注: 用得少, 圖形界面的系統下, 可以直接百度/google搜索更方便一點 conda search numpy=1.16
# 使用anaconda從所有Channels中搜索包 anaconda search FUZZYNAME
# 從指定通道安裝包,如 conda install conda-forge::PKGNAME
# 安裝指定版本的包,一個等號或2個等號均可 conda install PKGNAME==3.1.4
# 卸載當前環境的某個包 conda uninstall PKGNAME
# 卸載指定環境的某個包 conda uninstall -n ENVNAME PKGNAME
# 升級環境的所有包, 同樣可以指定環境 conda update --all -n ENVNAME
# 升級某個包, 同樣可以通過 -n ENVNAME 指定環境
conda update PKGNAME
# 其他有用的命令
# 搜索包時加上 --info, 可以輸出包的詳細信息 conda search PKGNAME --info
# 清理不用的緩存和包, 有時可以輕輕松松清理出幾個G, 但如果不是硬盤空間特別有限的情況, 建議不用清理, 因為安裝包如果緩存中有這個包就不用重新下載了 conda clean --all
# 安裝包且輸出命令提示,也就是直接安裝不需要確認, 再寫自動運行的腳本時會很有用 conda install --yes PKG1 PKG2
# 輸出conda的配置 conda config --show
# 參考
本文大量參考了Conda官方的英文版CheatSheet
[ Conda Cheat sheet ]( https://conda.io/projects/conda/en/latest/user-guide/cheatsheet.html )
[ conda cheatsheet ]( https://gist.github.com/qheuristics/8943338 )
