pyenv virtualenv和virtualwrapper

pyenv

pyenv最大的優點是:能夠在」全局」管理不一樣版本的Python, 能夠隨時配置當前的使用的Python版本,並對其餘使用Python解釋器的程序生效。
當系統安裝多個版本的Python,使用pyenv切換是至關方便的。html

virtualenv和virtualwrapper

virtualenv建立的不是全局的Python環境,只是一個虛擬的工做環境, 一般用來爲一個應用建立一套「隔離」的Python運行環境, 並且只有在激活某個自定義環境時,這個環境對應的Python版本和三方庫纔會生效。 相比pyenv它是更輕量級的,相似於容器的工做方式。 而pyenv只是對Python版本它的三方庫進行分別管理,不能對每一個項目進行單獨配置。python

若是開發者沒有常常更改系統默認Python版本的需求,pyenv是不須要安裝的。 可是對於項目開發而言,virtualenv基本上是必須的。 並且virtualenv能夠建立任意版本的Python和三方庫組合的環境,在大部分狀況下使用起來徹底能夠代替pyenv。nginx

virtualwrapper是對virtualenv的提高,對virtualenv指令進行的封裝,使得使用更方便。sql

 

virtualenv 和 virtualwrapper須要使用pip安裝, 所以自己就依賴於系統設定的Python解釋器運行,而virtualwrapper更是依賴 VIRTUALENVWRAPPER_PYTHON這個環境變量指定python解釋器的路徑。api

virtualenv經常使用操做

1.使用前建立一個項目的獨立目錄ruby

mkdir projecttest cd projecttest 

2.建立一個純淨的3.5版本python環境bash

➜  projecttest $: virtualenv pure_3_5 --no-site-packages --python=python3.5 

下面是一些建立成功的輸出信息,它拷貝了系統存在的3.5解釋器,並安裝了setuptools, pip, wheel這三個基本工具。app

Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.5'
New python executable in /Users/Mike/Documents/projecttest/pure_3_5/bin/python3.5
Also creating executable in /Users/Mike/Documents/projecttest/pure_3_5/bin/python
Installing setuptools, pip, wheel...done.

此時當前目錄下出現pure_3_5目錄工具

➜  projecttest $: ls
➜  projecttest $: pure_3_5

這個目錄下的bin、include、lib分別對環境操做工具、依賴庫、安裝的庫進行分別管理,其中bin目錄下的activate腳本是對虛擬環境的激活程序, 它裏面包含了」激活」和」退出指令的實現」並將當前的虛擬環境添加到系統環境變量中,能夠經過執行這個腳原本激活當前的虛擬環境:ui

➜  projecttest $: source pure_3_5/bin/activate (pure_3_5) ➜ projecttest $: 

這個時候能夠按照項目需求安裝須要的庫:

(pure_3_5) ➜ projecttest $: pip install greenlet 

安裝的任何庫都只會和當前的虛擬環境綁定,而不會影響到系統的Python環境。

查看一下當前已經安裝的庫:(pip、setuptools、wheel這三個是默認安裝的)

(pure_3_5) ➜  projecttest $: pip list
greenlet (0.4.12)
pip (9.0.1)
setuptools (36.7.2)
wheel (0.30.0)

3.退出環境 可使用deactive退出當前環境

(pure_3_5) ➜ projecttest $: deactivate ➜ projecttest $: 

virtaulenvwrapper

virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它的主要亮點有:
1.能夠將全部的虛擬環境整合到一個目錄下,方便管理,而不是像virtualenv那樣將虛擬環境放置在和項目同一個目錄, 這樣將每一個環境與項目剝離開,使得每一個環境的屢次使用很是方便。
2.能夠很是方便地對虛擬環境進行添加、刪除、複製等管理操做,還能夠很方便地對使用的環境進行切換。

安裝virtaulenvwrapper:(使用了系統默認pip)

# 安裝以前必須確保已經安裝了virtualenv pip3 install virtaulenvwrapper # Linux 須要使用sudo 

在使用virtualenvwrapper以前,須要進行如下操做:

1.建立用來存放虛擬環境的目錄

mkdir ~/.virtualenvs 

2.添加如下環境變量(Linux能夠在~/.bashrc添加 Mac能夠在 ~/.bash_profile添加),以Mac爲例:

export WORKON_HOME=~/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh 

若是使用的是Linux,~/.bashrc應該是這樣配置的:

export WORKON_HOME=~/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh # 具體位置可經過which查找 

3.載入剛剛添加的環境

# Mac source ~/.bash_profile # Linux source ~/.bashrc 

這樣virtualenvwrapper即可以使用了。下面是幾個經常使用的操做:

mkvirtualenv # 新建虛擬環境 lsvirtualenv # 列出全部的虛擬環境 workon # 進入或者切換虛擬環境 deactivate # 退出當前虛擬環境 rmvirtualenv # 刪除虛擬環境 

例如,和剛纔同樣建立一個純淨的Python3.5環境:

➜  ~ $: mkvirtualenv --no-site-packages --python=python3.5 pure3_5 (pure3_5) ➜ ~ $: 

這個命令會在設置的虛擬環境目錄下(~/.virtualenvs)建立環境,並執行這個環境的activate腳本。

使用workon切換虛擬環境

workon pure3_5 

Python官方的venv

Python3.3 開始推出了venv模塊,官方地址爲https://docs.python.org/3/library/venv.html,這個模塊的api能夠幫助你建立虛擬環境,它的使用方式和virtualenv基本相同,同時在解釋器被安裝時就增長了可執行接口,如Python3.6解釋器安裝時,提供了系統命令venv,源碼以下:

#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 if __name__ == '__main__': import sys import pathlib executable = pathlib.Path(sys.executable or 'python3').name print('WARNING: the pyenv script is deprecated in favour of ' f'`{executable} -m venv`', file=sys.stderr) rc = 1 try: import venv venv.main() rc = 0 except Exception as e: print('Error: %s' % e, file=sys.stderr) sys.exit(rc) 

不過目前來講這個模塊以及相關命令的使用較少,virtualenv和virtualenvwrapper的配合使用是至關方便的。

相關文章
相關標籤/搜索