我如何指定 poetry 应创建 venv 的 Python 版本?

How can I specify which Python version poetry should create venv?

我最近开始使用 Poetry。我真的很喜欢直接的包管理,但我似乎无法解决一件事:它应该使用的 Python 版本。我的机器上有 Python 3.9 和 3.7。 3.7 在系统环境变量中的优先级更高 - 这可能是问题的原因。

但让我们回到例子。我的 pyproject.toml 文件的一部分如下所示:

[tool.poetry.dependencies]
python = "3.9.2"
pandas = "^1.2.3"
requests = "^2.25.1"

我手动将Python更改为3.9.2,使用poetry add添加Pandas和请求然后运行 poetry install。我将 virtualenvs.in-project 设置为 true,因此我的虚拟环境在我的项目目录中创建时没有任何错误。但是,当它被激活时,我可以看到它正在使用 Python 3.7.9(在 Windows 上,从 PowerShell window 开始):

cd C:\pyprojects
c:/pyprojects/***/.venv/Scripts/Activate.ps1

(.venv) c:/pyprojects/***/.venv/Scripts/python.exe

Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

如果 pyproject.toml python = "3.9.2" 还不够,我如何明确告诉 Poetry 使用确切的 Python 版本?它是否选择了第一个 Python 环境变量,在我的例子中是 python37?或者我在这里遗漏了什么?

Poetry 无法使用 pyproject.toml 中指定的版本自行完全管理 Python 版本。您可以使用 pyenv (or pyenv-win if you're using Windows) for managing multiple versions, or you can use poetry env use path/to/python. If Python 3.9 is in your path or available on your system via pyenv or some similar version management tool, you can use poetry env use python3.9 or poetry env use 3.9. You can read more about poetry env use here.

之类的工具