管理環境
管理環境 #
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
切換環境 #
有時這對於您的系統來說可能不可行,特別是在 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
如果您移除目前已啟用的虛擬環境,將會自動停用。