在這裏,咱們將介紹使用這些工具的三種不一樣工具,以及什麼時候須要每種工具。讓咱們探討如下用例:python
若是您使用單個版本的Python如3.3+版本,而且想要管理不一樣的虛擬環境,那麼venv就是您所須要的。shell
若是你想使用多個3.3+版本的Python,不論是否有虛擬環境,那麼請使用pyenv。bash
若是您還想使用Python 2,那麼這pyenv-virtualenv是一個不錯的選擇。工具
Python 3.3+版本中包含venv包。它是建立輕量級虛擬環境的理想選擇。ui
直到Python 3.6,一個被調用的腳本pyvenv也做爲包裝器被包含在內venv,可是這已被棄用。它將在Python 3.8中被徹底刪除。當使用venv時,可使用徹底相同的功能,而且應更新全部現有的文檔。spa
venv用於經過終端命令建立一個新的環境:code
$ python3 -m venv directory-name-to-create
激活:blog
$ source name-given/bin/activate
經過如下方式停用:three
$ deactivate
若是您在停用環境後須要徹底刪除環境,則能夠運行:ip
$ rm -r name-given
默認狀況下,它建立的環境是您當前正在使用的Python版本。若是您正在編寫文檔,並但願讀者使用正確版本的Python,則能夠在命令中指定主要版本號和次要版本號,以下所示:
$ python3.6 -m venv example-three-six
若是閱讀器使用3.6之外的版本,則該命令將不會成功,並將在其錯誤消息中指示。可是,任何補丁版本(例如3.6.4)均可以使用。
當環境處於活動狀態時,任何包均可以經過pip正常安裝到它。默認狀況下,新建立的環境不包含計算機上已安裝的任何軟件包。由於pip它自己不必定會安裝在機器上。建議先使用,升級pip到最新版本pip install --upgrade pip。
項目一般會有一個requirements.txt指定其依賴項的文件。這容許使用shortcut命令pip install -r requirements.txt命令將全部包快速安裝到新建立的虛擬環境中。它們只存在於虛擬環境中。它在停用時將不可用,但在從新激活時將保持不變。
若是您不須要使用Python自己的其餘版本,那麼您只須要建立隔離的、特定於項目的虛擬環境。
若是您但願在一臺計算機上使用多個版本的Python,那麼pyenv是在版本之間安裝和切換的經常使用工具。這不能與前面提到的貶值的pyenv腳本混淆。它不是與Python綁定的,必須單獨安裝。
pyenv文檔對它的工做原理進行了很好的描述,所以咱們將在這裏簡單介紹如何使用它。首先,咱們須要安裝它。若是使用Mac OS X,可使用Homebrew執行此操做,或者考慮其餘安裝選項。
$ brew update $ brew install pyenv
接下來,在shell腳本的底部添加如下內容,以容許pyenv自動更改版本:
eval "$(pyenv init -)"
打開您在使用外殼腳本,經過$ ~/.zshrc,$ ~/.bashrc或$ ~/.bash_profile複製並粘貼在上面的行。
運行pyenv版本將顯示當前安裝了哪些Python版本,在當前使用的版本旁邊有一個*。pyenv version直接顯示了這一點,python——version能夠用來驗證這一點。
要安裝一個附加版本,好比3.4.0,只需使用pyenv install 3.4.0。
pyenv從四個方面來決定使用哪一個版本的Python,優先順序以下:
當設置一個使用Python 3.6.4的新項目時,pyenv local 3.6.4將運行在它的根目錄中。這將設置版本,並建立一個.python-version文件,以便其餘貢獻者的機器可以接收它。
pyenv命令的完整描述能夠添加書籤。
使用Python 3.3+時,咱們如今知道如何在不一樣版本的Python之間安裝和切換,以及如何建立新的虛擬環境。
舉個例子,假設咱們正在創建一個使用Python 3.4的項目。
首先,咱們可使用設置本地版本pyenv local 3.4.0。
若是咱們而後運行python3 -m venv example-project新的虛擬環境將example-project使用咱們在本地啓用的Python 3.4.0進行設置。
咱們激活使用source example-project/bin/activate並能夠開始工做。
接下來,咱們能夠選擇記錄協做者應該使用的內容python3.4 -m venv <name>。這意味着即便協做者沒有使用pyenv該python3.4命令,若是他們的Python版本不是咱們想要的主要和次要版本(3和4),也會出錯。
若是咱們認爲任何大於3.4的版本都是能夠接受的,那麼咱們也能夠選擇使用python3而不是python3.4,就像合做者使用3.6同樣,不然他們也會收到一個錯誤。這是一個特定於項目的決策。
pyenv可用於安裝Python 2和3版本。可是,正如咱們所看到的,venv僅限於大於3.3的Python版本。
pyenv-virtualenv是一個建立與pyenv集成的虛擬環境的工具,適用於全部Python版本。若是可能,仍然建議使用官方的Python venv。可是,例如,若是您正在建立一個基於2.7.13的虛擬環境,那麼這是對pyenv的讚美。
若是您已經使用它,它也適用於Anaconda和Miniconda conda環境。virtualenv還存在一個名爲的工具。這裏沒有涉及,但它最後是聯繫在一塊兒的。
安裝pyenv,接下來可使用Homebrew(或替代品)進行安裝,以下所示:
$ brew install pyenv-virtualenv
接下來在你的 .zshrc,, .bashrc或 .bash_profile(取決於你使用的shell)在底部添加如下內容:
eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
這容許pyenv在移動目錄時自動激活和停用環境。
要建立新的虛擬環境,請使用:
$ pyenv virtualenv <version> <name-to-give-it> // for example $ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10
能夠列出現有環境:
$ pyenv virtualenvs
激活/停用:
$ pyenv activate <name> $ pyenv deactivate
在撰寫本文時activate,prompt changing will be removed from future release將顯示使用警告。這是預期的,僅指(env-name)在shell中顯示的內容,而不是activate命令自己的使用。
安裝要求的工做原理以下所述venv。不像在venv一個rm -r命令不須要刪除一個環境,一個uninstall命令存在。