只用來管理 Python 版本和虛擬環境,Miniconda 也是一個很好的選擇

Anaconda 是一個面向數據科學的 Python 發行版,它打包了 Conda、Python 和一堆機器學習和人工智能相關和經常使用的包,並且還能夠用來安裝一些非 Python 編寫的庫。對於科學計算相關的用途很是方便,開箱即用。看起來很適合實驗室或是學校機房使用……html

對於常規的 Python 開發來講,Anaconda 過重了,並且主要面向科學計算領域,可是精簡版的 Miniconda 倒是一個很好的虛擬環境和依賴管理工具。python

更重要的是 Miniconda 兼容三個主流操做系統,並且不一樣平臺使用一樣的命令和接口(Conda 4.6 以上)。這大概算是我的偏好,由於我總在寫東西給別人看,因此老是喜歡兼容主流操做系統而且接口統一的解決方案。並且另外一方面 pyenv、virtualenvwrapper、direnv 等等相關替代工具都沒有原生 Windows 支持。 git

Miniconda 是什麼

先來理清幾個概念:github

  • Conda:包、依賴和環境管理器。
  • Anaconda(某種蟒蛇的名字):面向數據科學的 Python 發行版,包含 conda、conda-build、Python 和 100+ 經常使用的數據科學經常使用的庫及其依賴。
  • Miniconda:精簡版的 Anaconda,也是一個 Python 發行版,只包含 conda、Python 和一些基本的包。

相關資源:shell

Miniconda 基本用法

首先你須要訪問下載頁面下載對應操做系統的安裝包進行安裝,Python 版本選擇你想做爲默認選項(base version)的版本。而後打開 Windows 下的 Anaconda Prompt 或是 Anaconda Powershell Prompt,Linux 或 macOS 直接使用終端程序。app

下面是一些關鍵用法介紹,詳細內容能夠閱讀 Conda 文檔機器學習

建立虛擬環境

使用 conda create 命令建立虛擬環境,使用 --name 選項(-n)指定虛擬環境名稱:工具

$ conda create --name foo複製代碼

使用 conda info 命令查看當前環境名稱、Python 版本、虛擬環境文件夾位置、Conda 版本等等各類信息:學習

$ conda info複製代碼

使用 --envs 選項(-e)查看全部已建立的虛擬環境。在列出的虛擬環境中,使用星號(*)標識的是當前激活的虛擬環境:ui

$ conda info --envs複製代碼

激活虛擬環境

使用 conda activate 命令激活虛擬環境,添加虛擬環境名做爲參數:

$ conda activate foo複製代碼

激活之後會在命令行提示器前顯示虛擬環境名稱,好比:

(foo) $複製代碼

不添加虛擬環境名稱,就會從新激活基礎環境(base):

$ conda activate複製代碼

設置虛擬環境的 Python 版本

在建立虛擬環境的時候,可使用 python 參數指定 Python 版本。假設你使用的 Miniconda 默認版本是 Python 3.7,若是你想建立一個 Python 2.7 的虛擬環境,使用下面的命令:

$ conda create --name snakes python=2.7複製代碼

你能夠在虛擬環境名加上標識方便識別 Python 版本,好比:

$ conda create --name snakes-py27 python=2.7複製代碼

搭配 pip / Poetry 來管理依賴

由於 Conda 安裝庫的時候默認使用 Conda 本身的倉庫,這裏包含的 720 多個庫除了流行的 Python 包外大可能是數據科學相關的包。因此,更好的選擇是使用官方 PyPI 倉庫,這樣能夠確保你使用到最近更新的包,並且不會出現有些包找不到的狀況。

咱們要作的就是隻用 Conda 的 Python 版本和虛擬環境管理功能,不用它來管理依賴。依賴管理(安裝、卸載、更新等)仍然使用 pip 進行,或是進一步搭配 pip-tools 來管理依賴。

你須要在 conda 環境內使用下面的命令安裝 pip:

$ conda install pip複製代碼

或是統一使用下面的命令格式建立虛擬環境:

$ conda create --name bar pip複製代碼

這樣在執行 pip 命令時會使用虛擬環境內的 pip,而不是系統全局的 pip。這樣作的反作用是會產生幾個多餘的依賴。

除此以外,你也能夠搭配使用 Poetry。Poetry 默認會自動建立虛擬環境,因此須要關閉 Poetry 自動建立虛擬環境的設定,執行下面的命令便可:

$ poetry config settings.virtualenvs.create false複製代碼

總結

按照我目前掌握到的信息,Miniconda 的優缺點總結以下:

優勢

  • 替代 pyenv+virtualenv+virtualenvwrapper 的多個工具組合
  • 相似 virtualenvwrapper,能夠在任意位置激活虛擬環境,而不是必須在項目根目錄
  • 支持管理不一樣的 Python 版本
  • 兼容性很好,支持 Windows

缺點

  • conda 和 pip 組合存在潛在的衝突,但狀況在改善
  • conda 和 Poetry 組合存在潛在的衝突
  • 在 Windows 下,須要使用專用的命令行程序
  • 依賴管理比較弱,須要搭配 pip/Poetry 來使用

既然一個 Miniconda 就能很好的勝任 Python 版本管理和虛擬環境管理的任務,爲何要用 pyenv+virtualenv+virtualenvwrapper 呢?遺憾的就是依賴管理功能不夠完善,和 pip/Poetry 搭配使用則可能會有潛在的衝突。因此,推薦能接受 Conda+pip/Poetry 這種搭配的人使用;推薦使用 Python 作數據科學相關工做的人使用。

對比之下,最穩定的解決方案大概仍是 virtualenv+pip+其餘工具……

(若是你發現了錯誤描述、有不一樣見解和想要補充的信息,歡迎評論。)

(3)

相關文章
相關標籤/搜索