詳解如何管理多個(gè)Python版本和虛擬環(huán)境
多個(gè)Python版本:在同一臺(tái)機(jī)器上安裝不同的Python,例如2.7和3.4。
虛擬環(huán)境:獨(dú)立的環(huán)境,既可以同時(shí)安裝特定版本的Python,也可以安裝任何特定于項(xiàng)目的軟件包,而不會(huì)影響任何其他項(xiàng)目。
在這里,我們將介紹使用這些工具的三種不同工具,以及何時(shí)需要每種工具。讓我們探討以下用例:
- venv / pyvenv
- pyenv
- pyenv-virtualenv
如果您使用單個(gè)版本的Python如3.3+版本,并且想要管理不同的虛擬環(huán)境,那么venv就是您所需要的。
如果你想使用多個(gè)3.3+版本的Python,不管是否有虛擬環(huán)境,那么請(qǐng)使用pyenv。
如果您還想使用Python 2,那么這pyenv-virtualenv是一個(gè)不錯(cuò)的選擇。
VENV
Python 3.3+版本中包含venv包。它是創(chuàng)建輕量級(jí)虛擬環(huán)境的理想選擇。
直到Python 3.6,一個(gè)被調(diào)用的腳本pyvenv也作為包裝器被包含在內(nèi)venv,但是這已被棄用。它將在Python 3.8中被完全刪除。當(dāng)使用venv時(shí),可以使用完全相同的功能,并且應(yīng)更新所有現(xiàn)有的文檔。
venv用于通過(guò)終端命令創(chuàng)建一個(gè)新的環(huán)境:
$ python3 -m venv directory-name-to-create
激活:
$ source name-given/bin/activate
通過(guò)以下方式停用:
$ deactivate
如果您在停用環(huán)境后需要完全刪除環(huán)境,則可以運(yùn)行:
$ rm -r name-given
默認(rèn)情況下,它創(chuàng)建的環(huán)境是您當(dāng)前正在使用的Python版本。如果您正在編寫(xiě)文檔,并希望讀者使用正確版本的Python,則可以在命令中指定主要版本號(hào)和次要版本號(hào),如下所示:
$ python3.6 -m venv example-three-six
如果閱讀器使用3.6以外的版本,則該命令將不會(huì)成功,并將在其錯(cuò)誤消息中指示。但是,任何補(bǔ)丁版本(例如3.6.4)都可以使用。
當(dāng)環(huán)境處于活動(dòng)狀態(tài)時(shí),任何包都可以通過(guò)pip正常安裝到它。默認(rèn)情況下,新創(chuàng)建的環(huán)境不包含計(jì)算機(jī)上已安裝的任何軟件包。因?yàn)閜ip它本身不一定會(huì)安裝在機(jī)器上。建議先使用,升級(jí)pip到最新版本pip install --upgrade pip。
項(xiàng)目通常會(huì)有一個(gè)requirements.txt指定其依賴項(xiàng)的文件。這允許使用shortcut命令pip install -r requirements.txt命令將所有包快速安裝到新創(chuàng)建的虛擬環(huán)境中。它們只存在于虛擬環(huán)境中。它在停用時(shí)將不可用,但在重新激活時(shí)將保持不變。
如果您不需要使用Python本身的其他版本,那么您只需要?jiǎng)?chuàng)建隔離的、特定于項(xiàng)目的虛擬環(huán)境。
pyenv
如果您希望在一臺(tái)計(jì)算機(jī)上使用多個(gè)版本的Python,那么pyenv是在版本之間安裝和切換的常用工具。這不能與前面提到的貶值的pyenv腳本混淆。它不是與Python綁定的,必須單獨(dú)安裝。
pyenv文檔對(duì)它的工作原理進(jìn)行了很好的描述,因此我們將在這里簡(jiǎn)單介紹如何使用它。首先,我們需要安裝它。如果使用Mac OS X,可以使用Homebrew執(zhí)行此操作,或者考慮其他安裝選項(xiàng)。
$ brew update $ brew install pyenv
接下來(lái),在shell腳本的底部添加以下內(nèi)容,以允許pyenv自動(dòng)更改版本:
eval "$(pyenv init -)"
打開(kāi)您在使用外殼腳本,通過(guò)$ ~/.zshrc,$ ~/.bashrc或$ ~/.bash_profile復(fù)制并粘貼在上面的行。
運(yùn)行pyenv版本將顯示當(dāng)前安裝了哪些Python版本,在當(dāng)前使用的版本旁邊有一個(gè)*。pyenv version直接顯示了這一點(diǎn),python——version可以用來(lái)驗(yàn)證這一點(diǎn)。
要安裝一個(gè)附加版本,比如3.4.0,只需使用pyenv install 3.4.0。
pyenv從四個(gè)方面來(lái)決定使用哪個(gè)版本的Python,優(yōu)先順序如下:
- PYENV_VERSION環(huán)境變量(如果指定)。您可以使用該pyenv shell命令在當(dāng)前shell會(huì)話中設(shè)置此環(huán)境變量。
- 當(dāng)前目錄中的特定于應(yīng)用程序的.python版本文件(如果存在)。您可以使用pyenv local命令修改當(dāng)前目錄的.python版本文件。
- 通過(guò)搜索每個(gè)父目錄找到(如果有的話)第一個(gè).python版本的文件,直到找到文件系統(tǒng)的根目錄。
- 全局版本文件。您可以使用pyenv全局命令修改這個(gè)文件。如果不存在全局版本文件,pyenv假設(shè)您希望使用“system”P(pán)ython。(換句話說(shuō),如果pyenv不在您的路徑中,則運(yùn)行哪個(gè)版本。)
當(dāng)設(shè)置一個(gè)使用Python 3.6.4的新項(xiàng)目時(shí),pyenv local 3.6.4將運(yùn)行在它的根目錄中。這將設(shè)置版本,并創(chuàng)建一個(gè).python-version文件,以便其他貢獻(xiàn)者的機(jī)器能夠接收它。
pyenv命令的完整描述可以添加書(shū)簽。
pyenv和venv
使用Python 3.3+時(shí),我們現(xiàn)在知道如何在不同版本的Python之間安裝和切換,以及如何創(chuàng)建新的虛擬環(huán)境。
舉個(gè)例子,假設(shè)我們正在建立一個(gè)使用Python 3.4的項(xiàng)目。
首先,我們可以使用設(shè)置本地版本pyenv local 3.4.0。
如果我們?nèi)缓筮\(yùn)行python3 -m venv example-project新的虛擬環(huán)境將example-project使用我們?cè)诒镜貑⒂玫腜ython 3.4.0進(jìn)行設(shè)置。
我們激活使用source example-project/bin/activate并可以開(kāi)始工作。
接下來(lái),我們可以選擇記錄協(xié)作者應(yīng)該使用的內(nèi)容python3.4 -m venv <name>。這意味著即使協(xié)作者沒(méi)有使用pyenv該python3.4命令,如果他們的Python版本不是我們想要的主要和次要版本(3和4),也會(huì)出錯(cuò)。
如果我們認(rèn)為任何大于3.4的版本都是可以接受的,那么我們也可以選擇使用python3而不是python3.4,就像合作者使用3.6一樣,否則他們也會(huì)收到一個(gè)錯(cuò)誤。這是一個(gè)特定于項(xiàng)目的決策。
pyenv-virtualenv
pyenv可用于安裝Python 2和3版本。但是,正如我們所看到的,venv僅限于大于3.3的Python版本。
pyenv-virtualenv是一個(gè)創(chuàng)建與pyenv集成的虛擬環(huán)境的工具,適用于所有Python版本。如果可能,仍然建議使用官方的Python venv。但是,例如,如果您正在創(chuàng)建一個(gè)基于2.7.13的虛擬環(huán)境,那么這是對(duì)pyenv的贊美。
如果您已經(jīng)使用它,它也適用于Anaconda和Miniconda conda環(huán)境。virtualenv還存在一個(gè)名為的工具。這里沒(méi)有涉及,但它最后是聯(lián)系在一起的。
安裝pyenv,接下來(lái)可以使用Homebrew(或替代品)進(jìn)行安裝,如下所示:
$ brew install pyenv-virtualenv
接下來(lái)在你的 .zshrc,, .bashrc或 .bash_profile(取決于你使用的shell)在底部添加以下內(nèi)容:
eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
這允許pyenv在移動(dòng)目錄時(shí)自動(dòng)激活和停用環(huán)境。
要?jiǎng)?chuàng)建新的虛擬環(huán)境,請(qǐng)使用:
$ pyenv virtualenv <version> <name-to-give-it> // for example $ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10
可以列出現(xiàn)有環(huán)境:
$ pyenv virtualenvs
激活/停用:
$ pyenv activate <name> $ pyenv deactivate
在撰寫(xiě)本文時(shí)activate,prompt changing will be removed from future release將顯示使用警告。這是預(yù)期的,僅指(env-name)在shell中顯示的內(nèi)容,而不是activate命令本身的使用。
安裝要求的工作原理如下所述venv。不像在venv一個(gè)rm -r命令不需要?jiǎng)h除一個(gè)環(huán)境,一個(gè)uninstall命令存在。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python虛擬環(huán)境Virtualenv使用教程
- Python虛擬環(huán)境virtualenv的安裝與使用詳解
- python虛擬環(huán)境virtualenv的安裝與使用
- python搭建虛擬環(huán)境的步驟詳解
- python虛擬環(huán)境virualenv的安裝與使用
- python虛擬環(huán)境virtualenv的使用教程
- 使用Python搭建虛擬環(huán)境的配置方法
- Python虛擬環(huán)境項(xiàng)目實(shí)例
- python虛擬環(huán)境遷移方法
- Python插件virtualenv搭建虛擬環(huán)境
- 淺談關(guān)于Python3中venv虛擬環(huán)境
相關(guān)文章
Python基礎(chǔ)之getpass模塊詳細(xì)介紹
最近在看Python標(biāo)準(zhǔn)庫(kù)官方文檔的時(shí)候偶然發(fā)現(xiàn)了這個(gè)模塊。仔細(xì)一看內(nèi)容挺少的,只有兩個(gè)主要api,就花了點(diǎn)時(shí)間閱讀了一下源碼,感覺(jué)挺實(shí)用的,在這安利給大家。下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)之getpass模塊的相關(guān)資料,需要的朋友可以參考下。2017-08-08基于Python+Matplotlib實(shí)現(xiàn)直方圖的繪制
Matplotlib是Python的繪圖庫(kù),它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制直方圖,感興趣的朋友可以學(xué)習(xí)一下2022-04-04python實(shí)現(xiàn)自動(dòng)下載sftp文件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)自動(dòng)下載sftp文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Python中MySQLdb和torndb模塊對(duì)MySQL的斷連問(wèn)題處理
這篇文章主要介紹了Python中MySQLdb和torndb模塊對(duì)MySQL的斷連問(wèn)題處理,torndb使用起來(lái)相對(duì)更加簡(jiǎn)潔一些,需要的朋友可以參考下2015-11-11python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn)
這篇文章主要介紹了python自動(dòng)化測(cè)試三部曲之unittest框架的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10xshell會(huì)話批量遷移到mobaxterm的工具(python小工具)
這篇文章主要介紹了xshell會(huì)話批量遷移到mobaxterm的工具,使用方法也超級(jí)簡(jiǎn)單,本文通過(guò)python代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12