如何指定哪个python版本的诗歌应该创建venv?

问题描述

我最近开始使用诗歌。我真的很喜欢简单的包管理,但我似乎无法解决一件事。它应该使用的 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:

PS C:\pyprojects\***> & c:/pyprojects/***/.venv/Scripts/Activate.ps1
(.venv) PS C:\pyprojects\***> & 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" 不够用,如何明确告诉诗歌使用确切的 Python 版本?它是否选择了第一个 Python 环境变量,在我的情况下是 python37?或者我在这里遗漏了什么?

解决方法

Poetry 无法使用 pyproject.toml 中指定的版本自行完全管理 Python 版本。您可以使用 pyenv 之类的工具来管理多个版本,也可以使用 poetry env use path/to/python。如果 Python 3.9 在您的路径中,您可以使用 poetry env use python3.9poetry env use 3.9。您可以阅读有关 poetry env use here 的更多信息。