管理环境

管理环境 #

Poetry 将项目环境隔离作为其核心功能之一。

这意味着它将始终与您的全局 Python 安装隔离运行。为此,它将首先检查它当前是否在虚拟环境中运行。如果是,它将直接使用它,而不会创建新的环境。但如果不是,它将使用它已经创建的环境,或者为您创建一个全新的环境。

默认情况下,Poetry 将尝试使用 Poetry 安装期间使用的 Python 版本为当前项目创建虚拟环境。

但是,由于各种原因,此 Python 版本可能与项目支持的 python 范围不兼容。在这种情况下,Poetry 将尝试找到一个兼容的版本并使用它。如果它无法做到这一点,那么系统将提示您显式激活一个环境,请参阅 切换环境

注意

如果您使用 pyenv 等工具来管理不同的 Python 版本,您可以将实验性 virtualenvs.prefer-active-python 选项设置为 true。Poetry 然后将尝试找到您 shell 的当前 python

例如,如果您的项目需要比系统中可用的 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 的环境。

在环境之间切换 #

有时这可能不适合您的系统,尤其是在 Windows 上,pyenv 不可用,或者您只是更喜欢对您的环境有更明确的控制。为此,您可以使用 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

如果您删除了当前激活的虚拟环境,它将自动停用。