使用 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
檔案的專案,則可以安裝該檔案中列出的所有套件相依性。
在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。
找出您想要安裝套件的環境節點。 以滑鼠右鍵按一下節點,然後選取 [從 requirements.txt 安裝]。
您可以在 [輸出] 視窗中監視套件安裝程序:
輸出會列出已安裝的任何必要套件,以及受影響 pip 命令所需的任何更新和較新 pip 版本的可用性。
在虛擬環境中安裝相依性
您也可以在現有的虛擬環境中安裝 Python 套件相依性。
在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。
找出您想要安裝套件的虛擬環境節點。 以滑鼠右鍵按一下節點,然後選取 [從 requirements.txt 安裝]。
如果您需要建立虛擬環境,則請參閱使用虛擬環境。
產生 requirements.txt 檔案
如果您的專案所需的所有 Python 套件都已安裝在環境中,則可以在 Visual Studio 中產生 requirements.txt
檔案。
在 [方案總管] 中,展開專案,然後展開 [Python 環境] 節點。
找出您想要產生需求檔案的環境節點。 以滑鼠右鍵按一下節點,然後選取 [產生 requirements.txt]。
重新整理或新增項目至現有的 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
檔案。
呼叫
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...
將
find-links
和no-index
選項以及套件版本需求附加至您的requirements.txt
檔案:type requirements.txt --find-links wheelhouse --no-index azure==0.8.0
使用更新的需求檔案執行 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...