Python環境管理
什麼是Anaconda
Anaconda是專注於資料分析的Python發行版本,包含了conda、Python等190多個科學包及其依賴項。Anaconda透過管理工具包、開發環境、Python版本,大大簡化了你的工作流程。不僅可以方便地安裝、更新、解除安裝工具包,而且安裝時能自動安裝相應的依賴包,同時還能使用不同的虛擬環境隔離不同要求的專案。安裝Acaconda預設的Python是2.7;安裝Acaconda3預設的Python是3.6
什麼是Conda
Conda是一個開源的包、虛擬環境管理器,可以用於在同一個機器上安裝不同版本的軟體包及其依賴,並能夠在不同的環境之間切換,它的包管理類似PIP。
packages 管理: 可以使用 conda 來安裝、更新 、解除安裝工具包 ,並且它更關注於資料科學相關的工具包。在安裝 anaconda 時就預先整合了像 Numpy、Scipy、 pandas、Scikit-learn 這些在資料分析中常用的包。另外值得一提的是,conda 並不僅僅管理Python的工具包,它也能安裝非python的包。比如在新版的 Anaconda 中就可以安裝R語言的整合開發環境 Rstudio。
虛擬環境管理: 在conda中可以建立多個虛擬環境,用於隔離不同專案所需的不同版本的工具包,以防止版本上的衝突。對糾結於 Python 版本的同學們,我們也可以建立 Python2 和 Python3 兩個環境,來分別執行不同版本的 Python 程式碼。
安裝和使用
安裝過程略,非常簡單,安裝完之後執行下面的命令新增源,這樣以後透過conda安裝包就走國內映象。映象大全不只是Anaconda
# 新增Anaconda的TUNA映象 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 --set show_channel_urls yes
Anaconda安裝的框架在 使用者安裝的不同python環境都會被放在目錄~/anacondaX/envs下
環境變數會被自動新增到 ~/.bash_profile/Users/steven/Anaconda
可以在命令中執行conda info -e檢視已安裝的環境,如下圖,我這裡有多個環境。
常用命令
Conda管理
# 更新anaconda conda update conda # 更新anaconda後設資料包 conda update anaconda # 解除安裝Anaconda # 編輯 ~/.bash_profile 這個檔案刪除環境變數 # 刪除 .condarc 檔案這個檔案預設沒有,只有你執行過 conda config 命令以後才會自動建立。該檔案是conda的配置檔案 # 是YAML格式。比如你可以設定安裝包的渠道,是否自動更新conda,是否允許其他渠道等設定。
Python管理
# 建立一個環境並安裝其他版本的Python,安裝其他版本為啥還要建立環境呢?因為多版本支援就是靠不同環境實現的,所以你安裝其他版本 # 一定要和某個環境關聯才可以。 # python27 是環境名稱 # python=2.7 是要安裝的包和版本
# anaconda 是建立環境時同時要安裝的包,這個可以不寫 conda create -n python27 python=2.7 anaconda conda create -n python36 python=3.6 conda create -n python37 python=3.7 # 更新Python,進入某個環境執行下面的命令,將更新當前環境的Python到最新分支版本。比如當前是3.5,更新後將會到最新的3.X conda update python
環境管理
# 列出當前環境,環境名稱前有 * 號的表示當前環境 conda list --evns conda env list # 建立一個名為python34的環境,指定Python版本是3.4(不用管是3.4.x,conda會為我們自動尋找3.4.x中的最新版本) conda create --name python34 python=3.4 # 安裝好後,使用activate啟用某個環境 activate python34 # for Windows source activate python34 # for Linux & Mac # 如果想返回預設的python 2.7環境,執行 deactivate python34 # for Windows source deactivate python34 # for Linux & Mac # 不加環境則返回預設環境 source deactivate # for Linux & Mac deactivate # for Windows # 匯出環境,它會把當前環境中安裝的包以及版本號都匯出去,這樣你就可以拿到另外的機器上來重新構建一個相同的環境 # 匯出的內容包括環境名稱,安裝渠道,該環境安裝的包以及版本號。 source activate python36 # 首先進入名稱叫做python36環境 conda env export > environment.yml # 匯出當前環境到指定檔案 conda env create -f environment.yml # 透過環境檔案建立環境,不需要指定環境名稱,因為檔案中包含名稱欄位 # 移除一個名稱python36叫做環境 conda env remove --name python36
包管理
# 查詢包 conda search 包名 # 安裝包 conda install --name myenv scipy # 安裝包到指定環境中 conda install scipy # 安裝包到當前環境中 conda install scipy=0.15.0 # 安裝指定版本的包,到當前環境 conda install scipy curl # 安裝多個包
conda install -c anaconda django # -c是指定渠道名稱,也就是用哪個渠道安裝django。 # 解除安裝包 conda remove 包名 # 刪除當前環境中的指定包 conda remove -n python34 numpy # 刪除指定環境中的指定包 # 安裝不在conda或者acaconda的包,當你安裝的包不在conda管理範圍的時候可以使用pip來安裝 conda install pip # 首先在當前環境中安裝pip pip install 包名 # 其次在透過PIP命令在當前環境中安裝包 # 更新包 conda update 包名 # 更新當前環境指定的包 conda update -n python36 numpy # 更新指定環境中的指定包 # 檢視當前已經安裝的packages conda list conda list -n python36 # 檢視指定環境中安裝的所有包
說明:對於那些無法透過conda安裝或者從Anaconda.org獲得的包,我們通常可以用pip來安裝包。
pip只是一個包管理器,所以它不能為你管理環境。pip甚至不能升級python,因為它不像conda一樣把python當做包來處理。但是它可以安裝一些conda安裝不了的包,pip和conda都整合在Anaconda或miniconda裡邊。
另外你還可以去 官網 搜尋
按照命令去安裝
.condarc檔案說明
檔案這個檔案預設沒有,只有你執行過 conda config 命令以後才會自動建立。該檔案是conda的配置檔案,是YAML格式。比如你可以設定安裝包的渠道,是否自動更新conda,是否允許其他渠道等設定。下面是我的配置檔案說明。這些不是必須的。但是在國內建議設定channels,這個在上面已經說過。所以通常你不需要關注這個檔案。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
在channels裡面加入國內的渠道,另外配置一個 - defaults,含義是在國內渠道找不到時會去預設渠道去找。