分享方式:


使用 requirements.txt 管理必要 Python 套件

如果您與其他人共用 Python 專案,或使用組建系統來產生 Python 應用程式,則必須指定任何必要的外部套件。 當您計劃將專案拷貝到需要還原環境的其他位置時,您也需要定義必要的相依套件。

指定外部相依 Python 套件的建議方法是使用 需求檔案 (readthedocs.org)。 此檔案包含 pip 命令清單,這些命令會安裝您的專案所需的相依套件版本。 最常見的命令為 pip freeze > requirements.txt。 此命令會將環境的目前套件清單記錄到 requirements.txt 檔案中。

需求檔案包含所有已安裝套件的精確版本。 您可以使用需求檔案來凍結環境的需求。 透過使用精確的套件,您可以在另一部電腦上輕鬆重現您的環境。 即使安裝時已指定版本範圍,需求檔案仍然會包含套件作為另一個套件的相依性,或隨附於 pip 以外的安裝程式。

必要條件

  • 已安裝 Visual Studio 並支援 Python 工作負載。 如需詳細資訊,請參閱在 Visual Studio 中安裝 Python 支援。

  • 需求檔案。 您可以使用現有的需求檔案或如本文所述產生一個檔案

技術上,任何檔案名稱都可以用來追蹤需求。 不過,Visual Studio 會針對名為「requirements.txt」的需求檔案提供特定支援。在安裝套件時可以使用 -r <full path to file> 引數來指定該檔案的慣用名稱。

安裝 requirements.txt 中所列的相依性

如果您載入具有 requirements.txt 檔案的專案,則可以安裝該檔案中列出的所有套件相依性。

  1. 在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。

  2. 找出您想要安裝套件的環境節點。 以滑鼠右鍵按一下節點,然後選取 [從 requirements.txt 安裝]

    顯示如何在 Visual Studio 2019 中從需求文字檔安裝 Python 套件的螢幕擷取畫面。

    顯示如何在 Visual Studio 2022 中從需求文字檔安裝 Python 套件的螢幕擷取畫面。

  3. 您可以在 [輸出] 視窗中監視套件安裝程序:

    顯示從需求文字檔安裝 Python 套件的輸出的螢幕擷取畫面。

    輸出會列出已安裝的任何必要套件,以及受影響 pip 命令所需的任何更新和較新 pip 版本的可用性。

在虛擬環境中安裝相依性

您也可以在現有的虛擬環境中安裝 Python 套件相依性。

  1. 在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。

  2. 找出您想要安裝套件的虛擬環境節點。 以滑鼠右鍵按一下節點,然後選取 [從 requirements.txt 安裝]

如果您需要建立虛擬環境,則請參閱使用虛擬環境

產生 requirements.txt 檔案

如果您的專案所需的所有 Python 套件都已安裝在環境中,則可以在 Visual Studio 中產生 requirements.txt 檔案。

  1. 在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。

  2. 找出您想要產生需求檔案的環境節點。 以滑鼠右鍵按一下節點,然後選取 [產生 requirements.txt]

    顯示如何在 Visual Studio 2019 中為 Python 套件相依性產生需求文字檔的螢幕擷取畫面。

    顯示如何在 Visual Studio 2022 中為 Python 套件相依性產生需求文字檔的螢幕擷取畫面。

重新整理或新增項目至現有的 requirements.txt 檔案

如果 requirements.txt 檔案已經存在,則 Visual Studio 會顯示具有數個選項的提示:

當需求文字檔已經存在並具有更新或新增項目或取代檔案的選項時所顯示之提示的螢幕擷取畫面。

  • 取代整個檔案:覆寫 requirements.text 檔案中定義的所有項目、註解和選項。
  • 重新整理現有專案:更新 requirements.text 檔案中的版本規範字元,以符合目前安裝的版本。
  • 更新和新增項目:重新整理 requirements.text 檔案中的現有需求,並將所有新的套件需求附加至檔案結尾。

Visual Studio 會執行 pip 來偵測環境的目前套件需求,然後根據您的選取項目更新 requirements.txt 檔案。

手動安裝套件相依性

如果 pip 未安裝 requirements.txt 檔案中定義的套件相依性,則整個安裝會失敗。

若要解決這個問題,有兩個選項:

  • 手動編輯 requirements.txt 檔案以排除失敗的套件,然後重新執行安裝程序。

  • 使用 pip 命令選項來引用套件的可安裝版本。

使用 pip wheel 更新需求檔案

如果您使用 pip wheel 命令來編譯相依性,則可以將 --find-links <path> 選項新增至 requirements.txt 檔案。

  1. 呼叫 pip wheel 命令以編譯必要相依性清單:

    pip wheel azure
    

    輸出會顯示針對所收集套件建置的 Wheel:

    Downloading/unpacking azure
        Running setup.py (path:C:\Project\env\build\azure\setup.py) egg_info for package azure
    
    Building wheels for collected packages: azure
        Running setup.py bdist_wheel for azure
        Destination directory: c:\project\wheelhouse
    Successfully built azure
    Cleaning up...
    
  2. find-linksno-index 選項以及套件版本需求附加至您的 requirements.txt 檔案:

    type requirements.txt
    --find-links wheelhouse
    --no-index
    azure==0.8.0
    
  3. 使用更新的需求檔案執行 pip 安裝程序:

    pip install -r requirements.txt -v
    

    輸出會追蹤安裝程序的進度:

    Downloading/unpacking azure==0.8.0 (from -r requirements.txt (line 3))
        Local files found: C:/Project/wheelhouse/azure-0.8.0-py3-none-any.whl
    Installing collected packages: azure
    Successfully installed azure
    Cleaning up...
        Removing temporary dir C:\Project\env\build...