Python 虛擬環境入門

已發表: 2022-11-07

在本文中,您將學習如何在 Windows 和 Linux 操作系統中開始使用 Python 中的虛擬環境。

當您開始在本地開發環境中處理多個項目時,您經常會遇到依賴問題。 為每個項目創建虛擬環境可以幫助您更好地管理依賴項和項目需求。

為了利用 Python 中虛擬環境的優勢,讓我們學習創建和激活虛擬環境。

什麼是虛擬環境?

虛擬環境是包含項目代碼和依賴項的隔離且獨立的環境。

但是為什麼要使用虛擬環境呢?

好吧,虛擬環境允許您為各種項目安裝和使用相同庫的不同版本。 使用虛擬環境還可以確保在兩個或多個項目使用不同版本時不會發生重大更改。 讓我們更詳細地了解這一點。

在 Python 中安裝包

Python 標準庫附帶了幾個有用的模塊,用於單元測試、與操作系統交互、處理日期和時間等等。

但是,在處理 Python 項目時,您通常需要安裝由 Python 社區開發的其他包。 對於用於數據收集的網絡抓取、機器學習和網絡應用程序等應用程序尤其如此。

要安裝和管理這些包,您可以使用 conda 或 pip。

每個項目都需要一組特定的軟件包,您需要安裝這些軟件包。 但是,當您在本地計算機上安裝開發環境中的所有包時,所有項目都共享全局安裝的包。

本地開發環境

那麼為什麼這是一個問題呢?

好吧,您的開發環境中可能有 N 個包。 但是,您當前正在進行的項目可能只需要其中的 3 個。 當您的所有項目共享公共安裝時,很難確定哪些項目需要哪些已安裝的包——與每個項目相關的依賴項。

這種方法還有另一個限制。 假設您的項目庫中有一個 Django 2.2 項目。 您決定開始使用 Django 4 的項目。因此,您在同一開發環境中安裝了最新版本的 Django。

現有安裝會發生什麼?

它被您安裝的 Django 版本刪除並替換。 對於較新的穩定版本,某些功能可能已被棄用。 而且您早期的 Django 項目可能無法按預期工作。

版本差異

總結我們迄今為止的討論:當包都安裝在一個公共環境中時,依賴管理變得很困難,因為項目需要它們自己的一組庫來運行。

虛擬環境如何工作

到目前為止,我們已經看到了與在全球開發環境中安裝軟件包相關的挑戰(系統範圍的安裝)。 這促使我們了解虛擬環境如何解決這一限制。

當您為 Python 項目創建和激活虛擬環境時,您只能安裝當前項目所需的那些包。

python-虛擬環境

回顧 Django 項目示例,使用虛擬環境,您可以同時運行 Django 2.2 和 Django 4 項目——沒有任何衝突。 這是因為 Django 安裝不再是系統範圍的安裝,而是僅限於各個項目的虛擬環境。

本質上:虛擬環境是包含項目代碼和依賴項的隔離環境。

虛擬環境的優勢

虛擬環境的優勢

既然您已經了解了虛擬環境在 Python 中是如何工作的,那麼讓我們列舉一下使用它們的優勢:

  • 虛擬環境為各個項目提供了一個隔離的開發環境,允許我們只安裝特定項目所需的包。
  • 由於項目的虛擬環境既獨立又隔離,不同的項目可以使用同一個庫的不同版本——取決於需求。 使用虛擬環境,您不必擔心安裝庫和設置開發環境的系統權限。
  • 在虛擬環境中安裝包後,您可以在 requirements.txt 文件中捕獲項目的依賴項。 這允許其他開發人員複製項目的開發和環境,並使用單個命令安裝所需的包。

創建虛擬環境的工具

創建虛擬環境的工具

到目前為止,您已經了解了虛擬環境的工作原理以及使用它們的優勢。 讓我們探索一些可用於在 Python 中創建和管理虛擬環境的流行工具。

#1。 虛擬環境

Virtualenv是用於為 Python 項目創建和管理虛擬環境的廣泛使用的工具之一。 venv包中提供了virtualenv功能的一個子集。 但是,與venv相比, virtualenv包更快且可擴展。

#2。 Pipenv

使用 pipnev,您可以同時擁有virtualenv的虛擬環境功能和pip的包管理功能。 它使用管理 pipfiles 來管理虛擬環境內部的項目依賴項。

您可以直接在這個 Pipenv 遊樂場上的瀏覽器中試用pipenv

#3。 康達

如果您使用 Python 的 Anaconda 發行版進行開發,那麼您可以使用conda進行包管理和創建虛擬環境。

要了解更多信息,請查看有關使用 conda 管理環境的綜合指南。

#4。 詩歌

Poetry 是一個包管理工具,可讓您管理所有 Python 項目的依賴關係。 要開始使用 Poetry,您需要安裝 Python 3.7 或更高版本。

#5。 文夫

如前所述, venv提供了virtualenv功能的一個子集,但它的優勢在於它內置於 Python 標準庫中,從 Python 3.3 開始。

它可以通過 Python 安裝輕鬆獲得——並且不需要安裝外部包。 我們將在本教程中使用它來創建和使用虛擬環境。

如何在 Ubuntu 中創建 Python 虛擬環境

要學習本教程的其餘部分,您需要在本地安裝 Python 3。確保您運行的是 Python 3.5 或更高版本。

本節概述了在 Ubuntu Linux 機器中創建和激活虛擬環境的步驟。 同樣的步驟也可以在其他 Linux 發行版上使用。

為了便於管理,我們先創建一個項目目錄,然後cd進去; 我們將在這個目錄中創建venv

 $ mkdir my_project $ cd my_project

為 Python 項目創建虛擬環境的一般語法是python3 -m venv <venv-name-or-path> 。 運行此命令後,將在當前工作目錄中創建一個名為my_env的虛擬環境:

 $ python3 -m venv my_env

如何在虛擬環境中激活和安裝包

創建虛擬環境後,您可以激活它並在其中安裝所需的軟件包。 要激活虛擬環境,您可以運行以下命令:

 $ source my_env/bin/activate

激活虛擬環境後,可以運行pip list命令來獲取已安裝包的列表:

 $ pip list
圖像-3

到目前為止,我們還沒有安裝任何軟件包,因此您應該能夠在每個創建的虛擬環境中看到setuptoolspip (默認安裝)。

在虛擬環境中安裝pip可以讓您安裝特定項目所需的包; 這就是為什麼每個項目都有一個獨立的開發環境

現在您已經激活了虛擬環境,您可以使用 pip 在其中安裝項目特定的包。 例如,讓我們安裝 Python requests,這是下載次數最多的 Python 包之一,它提供了幾個有用的功能來發送 HTTP 請求以使用 Web API。

 $ pip install requests

安裝 requests 庫時,您會看到 requests 庫連同它所需的所有包一起安裝。

在 python 虛擬環境中安裝庫
 $ pip list
在 python 虛擬環境中查看庫

您可以使用pip freeze命令並將輸出重定向到 requirements.txt 文件,如下所示:

 $ pip freeze > requirements.txt

如果您檢查當前項目目錄的內容,您會看到已經創建了 requirements.txt 文件。

 $ ls # my_env requirements.txt

處理完項目後,您可以通過運行以下命令停用虛擬環境:

 $ deactivate

如何在 Windows 中創建 Python 虛擬環境

一般來說,Linux 環境是開發的首選。 如果您使用的是 Windows 機器,則可以考慮使用 Windows Subsystem for Linux (WSL) 設置 Ubuntu 終端環境以進行本地開發。

如果您使用的是 Windows 計算機,則可以使用 Windows PowerShell 或命令提示符並使用以下命令創建虛擬環境:

 > python -m venv <path-to-venv>

如何激活虛擬環境

在 Windows 機器上激活虛擬環境會有所不同,具體取決於您使用的是命令提示符還是 Windows PowerShell。

如果您在命令提示符下,請運行以下命令來激活虛擬環境:

 > <path-to-venv>\Scripts\activate.bat

或者,如果您使用的是 Windows PowerShell,則運行此命令將激活虛擬環境:

 > <path-to-venv>\Scripts\Activate.ps1

您可以在虛擬環境中安裝所有必需的軟件包。

要停用虛擬環境,您可以在命令提示符和 Windows PowerShell 上運行deactivate命令。

結論

在本文中,我們討論了系統範圍安裝的限制以及它們如何使跨 Python 項目的依賴管理變得困難。 Python 中的虛擬環境提供了一種更好地管理依賴項的方法,同時為各個項目提供了隔離的開發環境。

在 Python 中用於創建和管理虛擬環境的廣泛使用的工具中,您已經學習瞭如何使用venv——它內置在 Python 標準庫中以創建和激活虛擬環境。

在項目的專用虛擬環境中,可以安裝特定於項目的庫版本。 然後可以在 requirements.txt 文件中捕獲這些需求,從而允許其他開發人員輕鬆複製項目環境。

當你開始下一個 Python 項目時,一定要使用虛擬環境來進行更好的依賴管理。 快樂編碼!