【Python學習筆記】-虛擬環(huán)境virtualenv
在開發(fā)python應用程序的時候,系統(tǒng)安裝的python3只有一個版本:3.4。所有的第三方的包都回被pip安裝到python3的site-packages目錄下。
如果我們要要同時開發(fā)多個應用程序,那這些應用都共用一個python,就是安裝在系統(tǒng)的python3。如果應用A需要jinja 2.7,而應用B需要jinja 2.6怎么辦?
這種情況下,每個應用需要各自擁有一套“獨立”的python運行環(huán)境。有兩個常用工具用于創(chuàng)建python“獨立”環(huán)境:
- venv is available by default in Python 3.3 and later, and installs pip and setuptools into created virtual environments in Python 3.4 and later.
- virtualenv needs to be installed separately, but supports Python 2.7+ and Python 3.3+, and pip, setuptools and wheel are always installed into created virtual environments by default (regardless of Python version).
virtualenv
https://virtualenv.readthedocs.io/en/latest/
virtualenv is a tool to create isolated Python environments.
創(chuàng)建一個擁有自己安裝目錄的環(huán)境, 這個環(huán)境不與其他虛擬環(huán)境共享庫, 能夠方便的管理python版本和管理python庫
安裝Virtualenv
$ pip install virtualenv
創(chuàng)建virtualenv
假定我們要開發(fā)一個新的項目,需要一套獨立的python運行環(huán)境,可以這么做:
- 在項目目錄下,創(chuàng)建一個獨立的python運行環(huán)境,命名為 venv
virtualenv venv #創(chuàng)建一個名為ENV的目錄, 并且安裝了ENV/bin/python,創(chuàng)建了lib,include,bin目錄,安裝了pip
- lib,所有安裝的python庫都會放在這個目錄中的lib/pythonx.x/site-packages/下
- bin,bin/python是在當前環(huán)境是使用的python解釋器
如果在命令行中運行virtualenv --system-site-packages ENV, 會繼承/usr/lib/python2.7/site-packages下的所有庫, 最新版本virtualenv把訪問全局site-packages作為默認行為
default behavior.
virtualenv --no-site-packages venv
加上了參數(shù)--no-site-packages,這樣,已經(jīng)安裝到系統(tǒng)python環(huán)境中的所有第三方包都不會復制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的pyhton運行環(huán)境。
可以使用-p PYTHON_EXE選項在創(chuàng)建虛擬環(huán)境的時候指定python版本
#創(chuàng)建python2.7虛擬環(huán)境 virtualenv -p /usr/bin/python2.7 ENV2.7
#創(chuàng)建python3.4虛擬環(huán)境 virtualenv -p /usr/local/bin/python3.4 ENV3.4
激活virtualenv
新建的python環(huán)境被放到項目錄下的venv目錄,有了 venv 這個python環(huán)境,就可以用source進入該環(huán)境:
source ./venv/bin/activate
或者是
source ./venv/Scripts/activate
注意查看activate命令被放在了哪個目錄下。
執(zhí)行上面的命令后,可以看懂命令指示符變了,有個 (venv) 前綴,表示當前環(huán)境是一個名為 venv 的python環(huán)境,下面可以正常安裝各種第三方包,并運行python命令。
在venv 環(huán)境下,用 pip 安裝的包都在安裝到了 venv 這個環(huán)境下,系統(tǒng)python環(huán)境不受任何影響,也就是說, venv環(huán)境是專門針對當前項目創(chuàng)建的。
關(guān)閉virtualenv
退出venv 環(huán)境,使用 deactivate 命令:deactivate
viratualenv是如何創(chuàng)建“獨立”的python運行環(huán)境呢?其實就是把系統(tǒng)python復制一份到virtualenv的環(huán)境,用命令 source 進入一個virutalenv環(huán)境時,virtualenv會修改相關(guān)環(huán)節(jié)變量,讓命令python和pip均指向當前的virtualenv環(huán)境。
venv
venv不用安裝,不過需要python3.3以上。創(chuàng)建一個獨立的python運行環(huán)境,命名為venv
python3 -m venv ./venv
上面的命令會在當前目錄下創(chuàng)建一個名為venv的python環(huán)境中。進入和退出該環(huán)境的方式和virtualenv一致。
參考文檔:
https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments 官方文檔

浙公網(wǎng)安備 33010602011771號