Python虛擬環境常用工具介紹

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

默認情況下,pip安裝的包會安裝為全局版本,假如幾個項目分別使用不同版本的包,就會產生問題。因此也就催生了各式各樣的虛擬環境工具。本文將介紹一下常見的幾個用於創建和使用Python虛擬環境的工具,希望對大家有所幫助。

Virtualenv

這應該是最常見的一個虛擬環境工具了,同時支持Python 2和Python 3,出現的時間也比較早。安裝方式很簡單,用pip安裝就可以了:

pip install virtualenv

不過一般情況下這個包都是自帶的,不需要安裝。

之後就可以使用virtualenv來創建虛擬環境了,創建方法很簡單,其中ENV是要創建的虛擬環境路徑:

virtualenv ENV

這會創建幾個相應的文件夾,共同組成一個完整的虛擬環境。這里有一個額外參數–system-site-packages,如果在創建虛擬環境的時候使用該參數,虛擬環境會繼承主環境的所有第三方包。

要進入虛擬環境很簡單,運行Scripts文件夾中的activate腳本即可。虛擬環境是完全獨立的,在虛擬環境中安裝的所有包,都不會影響到全局環境中的包。

要退出虛擬環境也很簡單,運行deactivate腳本即可。

當不再需要虛擬環境的時候,直接將對應文件夾刪除就完事了,非常方便。

Venv

virtualenv是一個很好用的包,可惜是社區包,所以在Python 3的時候,官方終於吸取了virtualenv的優點,開發了一個類似的虛擬環境包venv,並將其加入了標準庫中。venv的好處是Python 3自帶的包,不再需要安裝,不過缺點是只能用在Python 3上面,所以流行程度沒有virtualenv高。

使用venv創建虛擬環境也很簡單,用法基本上和virtualenv類似:

python3-m venv /path/to/new/virtual/environment

可以看到相比virtualenv,venv創建的虛擬環境還多了一個配置文件。

該配置文件內容如下,可以看到它保存了系統中Python環境和虛擬環境的一些信息:

home = C:\\Python37include-system-site-packages = falseversion =3.7.1

venv進入和退出虛擬環境的方法和virtualenv一樣,就不多說了。

Pyenv

有些同學可能還聽說過pyenv,它是一個用於在Linux上管理多版本Python的工具,如果要測試一個項目是否可以在不同Python版本上運行,就需要使用pyenv來創建多版本的Python環境。

虛擬環境雖然是獨立的,但是Python版本還是和主版本一樣,系統中如果安裝了Python 3.7,那麼創建的虛擬環境還是3.7的。如果要安裝Python 3.5或者Python 3.6,就需要使用pyenv了。

pyenv原理其實也很簡單,當你指定某個版本的Python時,它會自動下載安裝這個Python,並配置好環境變量。不過由於它是Linux上的工具,所以這里先暫時不多做介紹了。

Anaconda

既然說了Pyenv,就順便來提一下Anaconda了。我們都知道,Python上各式各樣的包讓整個Python世界豐富多彩,但是很多包在安裝的時候會遇到一些小問題甚至小衝突。Anaconda主要解決的就是這個問題,它是一個完整的Python發行版,附帶了大量常用的科學計算、人工智能等包,並保證了良好的兼容性。如果你發現用pip安裝一個包(例如TensorFlow)非常麻煩,那麼或許Anaconda可以幫你。

Anaconda的安裝包有600多兆,因為自帶了很多包。如果你覺得比較臃腫,還可以選擇Miniconda,它是Anaconda的精簡版,安裝包僅50多兆,去掉了所有自帶包,當你想使用某個類庫的時候,可以手動去安裝它。

另外挺重要的一點就是Anaconda也可以用於創建虛擬環境,而且如果你指定的虛擬環境版本不存在,它會和pyenv一樣自動下載這個版本。該命令如下:

conda create -n <環境名稱> python=[要在虛擬環境中安裝的包]

其中環境名稱是必須指定的,後面的Python版本和要安裝的包可以不指定。如果不指定Python版本,Anaconda會用當前正在使用的Python版本來創建虛擬環境。

虛擬環境配置完畢後,使用conda activate <環境名>來進入虛擬環境,退出則使用conda deactivate命令。

conda在安裝和卸載包的時候,使用方法和pip命令類似,所以就不介紹了。

pipenv

其實我這篇文章,主要準備介紹的就是這個pipenv,它的作者就是大名鼎鼎的Kenneth Reitz。有些同學可能沒聽說過這個名字,但是Python上非常流行的requests庫知道吧,正是Kenneth Reitz大佬寫的。

前面簡單介紹了幾個虛擬環境工具的使用,不過真正在項目中使用的時候則比較繁瑣,基本流程如下:

用virtualenv/venv命令創建虛擬環境切換進入虛擬環境用pip命令從requirements.txt中安裝Python包開發項目退出虛擬環境將來將項目部署到服務器上的時候,前面三個步驟還得再來一次。如果換成使用pipenv,那麼幾個步驟完全可以壓縮為一條命令。如果你用過npm的話就很容易理解了,pipenv是一個依賴管理工具,相對於virtualenv等基礎工具來說更加高級。

pipenv的安裝很簡單,直接用pip就可以安裝了。

pip install –user pipenv

pipenv默認會將虛擬環境放到用戶目錄中,如果希望虛擬環境放到項目目錄中,可以設置PIPENVVENVINPROJECT環境變量。

pipenv安裝完畢之後,就可以用它來管理依賴了,pipenv也有install命令用來安裝三方包。pipenv會自動創建虛擬環境,安裝指定的包,並把信息保存到配置文件中。

執行完pipenv install命令之後,會生成兩個配置文件,Pipfile保存包信息,lock文件和npm里的lock文件一樣,保存具體的包版本信息。install命令加-d參數可以安裝dev-package,例如下圖的autopep8。

下面簡單介紹一下pipenv的常用命令。要安裝某個包:

pipenv install requests

如果需要指定版本號:

pipenv install requests==2.13.0

卸載某個包:

pipenv uninstall requests

更新所有包:

pipenv update

更新某個包:

pipenv update <包名>

還可以和requirements.txt進行導入導出:

#從requirements.txt導入並安裝包pipenv install -r path/to/requirements.txt#從Pipfile配置文件將包信息導出到requirements.txtpipenv lock -r

pipenv還支持.env文件模擬環境變量,例如下圖中的.env文件。

然後就可以在代碼中以環境變量的方式獲取到這些值了。

pipenv還有很多實用功能,還可以通過環境變量的方式進行很多配置,篇幅所限就不介紹了。希望本文對大家有所幫助。

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!