我們在寫的Python程序的時候,經(jīng)常會用到非標(biāo)準(zhǔn)庫的包和模塊,比如要求等非常有用的第三方包和模塊。有時候也會用到某個包和模塊的特定版本,可能是這個特定的版本修復(fù)了某個bug,或者是依賴的接口只有該版本有。也可能系統(tǒng)安裝了Python3.6,但應(yīng)用程序要求3.7或Python2.7。
這些情況注定了對多個Python及其庫的需求。如果我們寫的程序依賴某個庫的1.0的版本,而系統(tǒng)安裝的是1.2的版本,應(yīng)用程序就無法運(yùn)行;如果應(yīng)用程序要求Python2.7,則它在Python3上就可能會保存。
要解決這些不同需求的問題就是使用虛擬環(huán)境,它是一個目錄樹,其中安裝特定的Python的版本及需要的庫的版本。這樣,不同的應(yīng)用可以使用不同的虛擬環(huán)境來滿足其運(yùn)行條件。不同虛擬環(huán)境內(nèi)部的庫版本涉及不會影響其它虛擬環(huán)境。
Python的虛擬環(huán)境的創(chuàng)建和使用
在Python2時代,虛擬環(huán)境管理用的是virtualenv及其封裝virtuaalenvwrapper這兩個包(通過pipinstall可以安裝)。它們也支持在Python3下使用。virtuaalenvwrapper是使用shell開發(fā)的,因此不支持Windows。支持Windows的叫做virtuaalenvwrapper-win。
從Python3.3開始,引入了新的庫venv來進(jìn)行虛擬環(huán)境的管理,詳見PEP-405的描述。它的很多操作都和virtualenv類似。pyvenv是Python3.3和3.4中創(chuàng)建虛擬環(huán)境的推薦工具,但是在Python3.6中已經(jīng)棄用,之后的版本還是用venv。
使用venv創(chuàng)建33虛擬環(huán)境還是很容易的,將venv模塊作為腳本運(yùn)行并確定虛擬環(huán)境存放的路徑即可:
python3-mvenv/path/to/myenv
條這將命令創(chuàng)建33/path/to/myenv目錄,并在其中創(chuàng)建包含的Python解釋器,標(biāo)準(zhǔn)庫和各種支持文件的目錄:
myenv
├──bin
│├──activate
│├──activate.csh
│├──activate.fish
│├──easy_install
│├──easy_install-3.6
│├──pip
│├──pip3
│├──pip3.6
│├──python->python3.6
│├──python3->python3.6
│└──python3.6->/usr/bin/python3.6
├──include
├──lib
│└──python3.6
│└──site-packages
├──lib64->lib
└──pyvenv.cfg
創(chuàng)建虛擬環(huán)境后,就可以激活并使用它在Linux的MACOS和上,運(yùn)行:
source/path/to/myenv/bin/activate
(腳本這個的英文為bashshell關(guān)系編寫的,你如果使用的的英文csh或fish殼,使用就要activate.csh或activate.fis腳本來激活)。
激活虛擬環(huán)境后,你的殼提示就會顯示你正在使用的虛擬環(huán)境的名稱,你就可以使用該虛擬環(huán)境下的Python的及相關(guān)的庫了:
$sourcemyenv/bin/activate
(myenv)veelion@gtx:~/p2/tutorial/md_Python/codes$whichpython
/home/veelion/p2/tutorial/md_Python/codes/myenv/bin/python
(myenv)veelion@gtx:~/p2/tutorial/md_Python/codes$python
Python3.6.8(default,Dec242018,19:24:27)
[GCC5.4.020160609]onlinux
Type"help","copyright","credits"or"license"formoreinformation.
>>>importsys
>>>sys.path
['','/usr/lib/python36.zip','/usr/lib/python3.6','/usr/lib/python3.6/lib-dynload','/home/veelion/p2/tutorial/md_Python/codes/myenv/lib/python3.6/site-packages']
>>>
以上內(nèi)容為大家介紹了python虛擬環(huán)境,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/