在上一篇文章 安裝的 Python 版本太多互相干擾?之後不再用擔憂這個問題了。 中我給你們介紹了一個 Python 版本的管理工具「pyenv」,能夠很容易的安裝不一樣的 Python 版本,進行全局的 Python 版本切換。就這麼開開心心的解決了 Python 版本衝突的問題之後,又忽然出現了一個新的問題擺上了桌面:假如你手裏有兩個項目,其中一個項目要求使用 django 1.5 這個版本,可是另一個項目卻要求使用 django 2.0 這個版本,該怎麼辦呢?html
顯然此時若是全局安裝 django,確定是沒法知足咱們的這個需求。全局安裝就安裝一個版本,我總不能用另外一個的時候把當前這個版本卸掉吧,這樣的話那真是就麻煩到家了,這時候我又想到了 Python 的簡潔優雅,省心省力,這個問題確定有解,果不其然,又被我給找到了,這就是我今天要給你們說的「virtualenv」。git
「virtualenv」自己就是一個獨立的工具,用來隔離不一樣項目的工做環境。由於上一篇文章所講的「pyenv」也是用來隔離的,因此不少人容易把這兩個搞混,因此在這裏我先來講一下二者之間的區別。github
「pyenv」是用來管理不用版本的 Python,例如你作某個項目的時候須要用的是 Python 2.7.1 這個版本,可是呢你又想與時俱進,學習一下 Python3,這個時候你就能夠用 pyenv 來管理這兩個不一樣版本的 Python。django
「virtualenv」是用來隔離不一樣項目的工做環境,例如你手裏的兩個項目,用到的都是 Python 2.7.1,可是呢,其中一個項目須要使用 django 1.5,而另外一個項目則須要使用 django 2.0,這個時候 virtualenv 橫空出世,解決這個問題。bash
可能到這敏銳的你已經發現,咱們只須要把「pyenv」和「virtualenv」這倆工具組合起來,就可以讓任意版本的 Python 和 任意版本的第三方庫隨意組合,這種隨意組合保持着很高的靈活性,同時也避免了不一樣項目之間可能發生的工做環境的衝突。app
我在上面說過「virtualenv」是一個獨立的工具,咱們能夠直接使用它。可是鑑於上一篇文章咱們學習了 pyenv,本着學以至用,咱們仍是用 pyenv,我假設你已經學習了上一篇文章,系統中已經有了 pyenv,此時只須要安裝 pyenv-virtualenv 這個插件便可。工具
安裝 pyenv-virtualenv,手動安裝和咱們以前安裝 pyenv 是同樣的,從 GitHub 直接下載到本地,首先執行下面的命令:學習
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
安裝的過程以下所示:spa
Cloning into '/Users/rocky/.pyenv/plugins/pyenv-virtualenv'... remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (4/4), done. remote: Total 2009 (delta 0), reused 0 (delta 0), pack-reused 2005 Receiving objects: 100% (2009/2009), 568.83 KiB | 171.00 KiB/s, done. Resolving deltas: 100% (1373/1373), done.
咱們能夠看到上面已經安裝成功,接下來咱們要添加一下環境變量:.net
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
環境變量配置成功,接下來咱們要從新載入一下配置文件,在這裏咱們是直接推出之後從新登錄:
exec "$SHELL"
就這樣,「pyenv-virtualenv」就安裝完成了。一樣咱們能夠經過命令行來驗證一下它是否安裝成功:
pyenv help virtualenv
顯示的結果以下所示:
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name> pyenv virtualenv --version pyenv virtualenv --help -f/--force Install even if the version appears to be installed already
pyenv-virtualenv 安裝成功之後,咱們就能夠給同一個 Python 建立不一樣的虛擬環境,好比像下面這樣建立兩個新的虛擬環境:
pyenv virtualenv 2.7.1 project1 pyenv virtualenv 2.7.1 project2
咱們能夠用以下命令來查看已經建立好的虛擬環境:
pyenv virtualenvs
顯示以下:
2.7.1/envs/project1 (created from /home/rocky/.pyenv/versions/2.7.1) 2.7.1/envs/project2 (created from /home/rocky/.pyenv/versions/2.7.1) project1(created from /home/rocky/.pyenv/versions/2.7.1) project2 (created from /home/rocky/.pyenv/versions/2.7.1)
建立完上述的虛擬環境之後,咱們就能夠經過命令行來操做它,好比進入(activate)或者退出(deactivate)虛擬環境。當咱們進入到虛擬環境的時候,左邊會提示咱們當前所在的環境,由於有時候咱們的本地可能建了不少個虛擬環境,有提示的話能夠防止你記錯當前你進入的環境,人性化的一批,以下所示:
pyenv activate project1
上述意思是說進入到 project1 的虛擬環境。
(project1) $ pip install django==1.5 (project1) $ pyenv deactivate
進入到 project1 的虛擬環境後,安裝了 django 1.5 這個版本,而後退出 project1 這個虛擬環境。
固然仍是能裝就能刪,若是你看哪一個環境不順眼,想要刪掉它,就用下面的命令:
pyenv virtualenv-delete project1
更多內容,歡迎關注公衆號「Python空間」,期待和你的交流。
原文出處:https://www.cnblogs.com/Rocky0429/p/10100705.html