管理环境
管理环境 #
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
在环境之间切换 #
有时这可能不适合您的系统,尤其是在 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
如果您删除了当前激活的虚拟环境,它将自动停用。