管理環境

管理環境 #

Poetry 使專案環境隔離成為其主要功能之一。

這表示它會始終獨立於您的全域 Python 安裝。為達成此目的,它會先檢查它目前是否正在虛擬環境中執行。如果是,它會直接使用它,而不会建立新的虛擬環境。但如果不是,它會用它已經建立的虛擬環境或為您建立一個全新的虛擬環境。

預設情況下,Poetry 會嘗試使用 Poetry 安裝期間使用的 Python 版本,為目前專案建立虛擬環境。

然而,由於各種原因,此 Python 版本可能與專案支援的 python 範圍不相容。在這種情況下,Poetry 會嘗試尋找相容的版本並使用它。如果它無法執行此操作,則會提示您明確啟用一個版本,請參閱 切換環境

附註

如果您使用像 pyenv 這樣的工具來管理不同的 Python 版本,您可以將實驗性的 virtualenvs.prefer-active-python 選項設定為 true。然後,Poetry 會嘗試尋找您 shell 中目前的 python

例如,如果您的專案需要比系統中提供的 Python 更新的版本,標準的工作流程應如下所示:

pyenv install 3.9.8
pyenv local 3.9.8  # Activate Python 3.9 for the current project
poetry install
附註
自 1.2 版起,Poetry 不再支援管理 Python 2.7 的環境。

切換環境 #

有時這對於您的系統來說可能不可行,特別是在 pyenv 無法使用的 Windows 中,或者您只是想更明確地控制您的環境。對於這個特定目的,您可以使用 env use 指令,告訴 Poetry 為目前專案使用哪個 Python 版本。

poetry env use /full/path/to/python

如果您的 PATH 中有 python 可執行檔,則可以使用它

poetry env use python3.7

在這種情況下,您甚至可以使用次要的 Python 版本

poetry env use 3.7

如果您想要停用明確啟用的虛擬環境,可以使用特殊system Python 版本來檢索預設行為

poetry env use system

顯示環境資訊 #

如果您想要取得當前已啟用虛擬環境的基本資訊,可以使用 env info 指令

poetry env info

將輸出類似於以下內容

Virtualenv
Python:         3.7.1
Implementation: CPython
Path:           /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid:          True

Base
Platform: darwin
OS:       posix
Python:   /path/to/main/python

如果您只想要知道虛擬環境的路徑,可以將 --path 選項傳遞至 env info

poetry env info --path

如果您只想要知道 python 執行檔的路徑(這對於在未安裝在虛擬環境中時,從全域性環境中執行 mypy 很實用),可以將 --executable 傳遞至 env info

poetry env info --executable

列出與專案關聯的環境 #

您也可以使用 env list 指令列出與目前的專案關聯的所有虛擬環境

poetry env list

將輸出類似的下列內容

test-O3eWbxRl-py3.6
test-O3eWbxRl-py3.7 (Activated)

可以傳遞 --full-path 選項來顯示這些環境的完整路徑

poetry env list --full-path

刪除環境 #

最後,您可以使用 env remove 來刪除現有的虛擬環境

poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7

您可以一次刪除多個環境。

poetry env remove python3.6 python3.7 python3.8

使用 --all 選項來一次刪除所有虛擬環境。

poetry env remove --all

如果您移除目前已啟用的虛擬環境,將會自動停用。