咱們舉個例子:html
若是服務器上要運行這兩個項目,就須要安裝兩個版本。若是項目更多,須要的版本也越多,咱們就須要有版本管理的概念。python
上面咱們看到,版本管理解決了,不一樣項目對python版本的需求。若是咱們服務器上有增長了一個項目,狀況以下,若是解決呢linux
咱們看到項目二和項目三要去的是一樣的版本,可是依賴的包是不一樣版本的,咱們沒法在一個版本上,同一個包安裝不一樣的版本。這樣容易形成混亂。所以就須要虛擬環境了。虛擬環境就是在所需的版本上,建立一個副本,在副本里進行依賴包的管理,這樣不一樣的項目用本身的副本,就不會相互干擾。git
簡單點說就是,安裝pyenv
後,再安裝pipenv
。就能夠知足平常的開發需求。若是對於虛擬環境的要求比較高,能夠安裝一下pyenv-virtualenv
。後面具體講解一下他們的功能。根據實際需求作出選擇便可。github
pyenv不支持windows,只支持mac和linux。官方提供了一個安裝腳本,安裝起來很是簡單,它會自動安裝pyenv
和pyenv-virtualenv
shell
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
複製代碼
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
複製代碼
pyenv安裝後會在用戶家目錄建立一個.pyenv
的文件夾。若是要卸載,直接刪除這個文件夾,而後將~/.bashrc
中,安裝時添加的3行代碼刪除,就能夠了。 刪除.pyenv
segmentfault
rm -rf $(pyenv root)
# 或
# rm -rf ~/.pyenv
複製代碼
pyenv versions
查看本機已有版本pyenv install -l
查看可安裝的版本pyenv install 2.7.3
安裝指定的版本pyenv uninstall 2.7.3
卸載指定的版本pyenv shell 2.7.3
設置面向 shell 的 Python 版本,經過設置當前 shell 的 PYENV_VERSION 環境變量的方式。這個版本的優先級比 local 和 global 都要高。–unset
參數能夠用於取消當前 shell 設定的版本 pyenv shell --unset
。pyenv local 2.7.3
設置 Python 本地版本,經過將版本號寫入當前目錄下的 .python-version 文件的方式。經過這種方式設置的 Python 版本優先級較 global 高。這種方式,每次進入目錄,執行python命令運行腳本時,會自動使用設置的版本。並且不會影響全局環境pyenv global 2.7.3
設置全局的 Python 版本,經過將版本號寫入 ~/.pyenv/version 文件的方式。這種方式會營銷全局環境,要謹慎使用pyenv rehash
建立墊片路徑(爲全部已安裝的可執行文件建立 shims,如:~/.pyenv/versions//bin/,所以,每當你增刪了 Python 版本或帶有可執行文件的包(如 pip)之後,都應該執行一次本命令)pyenv virtualenv 2.7.10 env-2.7.10
建立虛擬環境,若不指定 python 版本,會默認使用當前環境 python 版本。若是指定 Python 版本,則必定要是已經安裝過的版本,不然會出錯。環境的真實目錄位於 ~/.pyenv/versions 下pyenv virtualenvs
列出當前虛擬環境pyenv activate env-name
激活虛擬環境pyenv deactivate
退出虛擬環境,回到系統環境pyenv uninstall my-virtual-env
刪除虛擬環境,或者直接刪除目錄rm -rf ~/.pyenv/versions/env-name
小技巧 pyenv切換版本,也可使用虛擬環境,好比可使用
pyenv local env-name
,來達到當前目錄使用虛擬環境的目的。相比pyenv activate env-name
更加方便,每次進入目錄自動切換版本。windows
使用pip安裝便可安全
pip install pipenv
複製代碼
想要shell 自動補齊,Linux or Mac 環境下,bash下若是能自動命令補全豈不是更好?請把以下語句追加到.bashrc或者.zshrc便可:bash
eval "$(pipenv --completion)"
複製代碼
pipenv --python 3.6
建立虛擬環境,pipenv 會自動掃描系統尋找合適的版本信息,若是找不到的話,同時又安裝了 pyenv 的話,則會自動調用 pyenv 下載對應版本的 python, 不然會報錯。pipenv shell
進入虛擬環境pipenv install urllib3
安裝虛擬環境或者第三方庫,也能夠指定版本pipenv install urllib3==1.22
pipenv uninstall urllib3
卸載一個庫,所有卸載使用pipenv uninstall --all
pipenv update urllib3
更新指定包,不帶參數pipenv update
會卸載當前全部的包,並安裝它們的最新版本pipenv --where
查看項目根目錄pipenv --venv
查看虛擬環境目錄pipenv run
在虛擬環境中運行命令pipenv check
檢查安全漏洞pipenv graph
顯示當前依賴關係圖信息pipenv lock
鎖定並生成Pipfile.lock文件pipenv open
在編輯器中查看一個庫本文原文來自個人我的博客 www.xingjiehu.com