我该如何指定poetry创建虚拟环境的Python版本?

24

最近我开始使用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 和 requests库,然后运行了 poetry install。由于我把 virtualenvs.in-project 设置为true,因此我的虚拟环境在项目目录下创建时没有出现任何错误。但是,当它被激活时,我可以看到它正在使用Python 3.7.9版本(在Windows上,从PowerShell窗口开始):

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.
我如何明确告诉Poetry使用精确的Python版本,如果pyproject.toml python = "3.9.2"不够?它是否选择第一个Python环境变量,在我的情况下是python37?或者我漏掉了什么?

Pyenv对于管理多个Python版本的设置非常有用。您只需执行cd my-projectpyenv local 3.9.2(或任何您想要的版本),然后执行poetry install以使用正确的Python版本创建虚拟环境。 - Taylor D. Edmiston
1个回答

38

使用pyproject.toml中指定的版本,Poetry无法完全管理Python版本。您可以使用类似于pyenv(如果您使用的是Windows,请使用pyenv-win)等工具来管理多个版本,或者您可以使用poetry env use path/to/python命令。如果Python 3.9在您的路径中或通过pyenv或某些类似版本管理工具在系统上可用,则可以使用poetry env use python3.9poetry env use 3.9命令。您可以在这里了解有关poetry env use命令的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接