Python:virtualenv 和 venv


原文出自廖雪峰博客。

在開發python應用程序的時候,系統安裝的python3只有一個版本:3.4。所有的第三方的包都回被pip安裝到python3的site-packages目錄下。

如果我們要要同時開發多個應用程序,那這些應用都共用一個python,就是安裝在系統的python3。如果應用A需要jinja 2.7,而應用B需要jinja 2.6怎么辦?

這種情況下,每個應用需要各自擁有一套“獨立”的python運行環境。有兩個常用工具用於創建python“獨立”環境:

  • 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

virtualenv就是用來為一個應用創建一套“隔離”的python運行環境。

首先,我們用pip安裝virtualenv

pip3 install virtualenv

然后,假定我們要開發一個新的項目,需要一套獨立的python運行環境,可以這么做:

在項目目錄下,創建一個獨立的python運行環境,命名為 venv

virtualenv --no-site-packages venv

命令 virtualenv就可以創建一個獨立的python運行環境,我們還加上了參數 --no-site-packages,這樣,已經安裝到系統python環境中的所有第三方包都不會復制過來,這樣,我們就得到了一個不帶任何第三方包的“干凈”的pyhton運行環境。

新建的python環境被放到項目錄下的venv目錄,有了 venv 這個python環境,就可以用source進入該環境:

source ./venv/bin/activate

或者是

source ./venv/Scripts/activate

注意查看activate命令被放在了哪個目錄下。

執行上面的命令后,可以看懂命令指示符變了,有個 (venv) 前綴,表示當前環境是一個名為 venv 的python環境,下面可以正常安裝各種第三方包,並運行python命令。

在 venv 環境下,用 pip 安裝的包都在安裝到了 venv 這個環境下,系統python環境不受任何影響,也就是說, venv環境是專門針對當前項目創建的。

退出 venv 環境,使用 deactivate 命令:

deactivate

這樣就回到了正常的環境。

viratualenv是如何創建“獨立”的python運行環境呢?其實就是把系統python復制一份到virtualenv的環境,用命令 source 進入一個virutalenv環境時,virtualenv會修改相關環節變量,讓命令python和pip均指向當前的virtualenv環境。

venv

venv不用安裝,不過需要python3.3以上。創建一個獨立的python運行環境,命名為venv

python3 -m venv ./venv

上面的命令會在當前目錄下創建一個名為venv的python環境中。進入和退出該環境的方式和virtualenv一致。

參考文檔:

https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments 官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM