gpt4 book ai didi

python - Poetry 没有使用正确版本的 Python

转载 作者:行者123 更新时间:2023-12-03 19:48:04 27 4
gpt4 key购买 nike

我最近安装了 Pyenv 和 Poetry,想创建一个新的 Python 3.8 项目。我已经设置了 globallocal python 版本到 3.8.1使用适当的 Pyenv 命令(例如 pyenv global 3.8.1)。当我跑 pyenv version在我的终端中,输出是 3.8.1.正如预期的那样。

现在,问题是当我用 Poetry( poetry new my-project )创建一个新的 python 项目时,生成的 pyproject.toml file 使用 python 2.7 创建一个项目:

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["user <user@email.com>"]

[tool.poetry.dependencies]
python = "^2.7"

[tool.poetry.dev-dependencies]
pytest = "^4.6"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

Poetry 似乎默认回 Python 的系统版本。如何更改它以使用与 Pyenv 一起安装的版本?

编辑

我使用的是 MacOS,它与 Python 2.7 捆绑在一起。我认为这可能会导致这里的一些问题。我用 Pyenv 再次重新安装了 Python 3.8,但是当我点击 Poetry install 时我收到以下错误:
The currently activated Python version 2.7.16 is not supported by the project (^3.8).
Trying to find and use a compatible version.

[NoCompatiblePythonVersionFound]
Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command.

我应该使用 Pyenv 为项目明确创建一个环境,还是应该在运行后项目能够访问正确的 Python 版本 pyenv local 3.8.1. ?当我做后者时,没有任何变化,我仍然遇到相同的错误。

最佳答案

pyproject.toml用于定义项目的所有依赖项,包括支持的 Python 版本。
您提示的那句话只是说项目支持的python 版本是python2.7 或更高版本,这与您使用pyenv 安装的python 版本无关。

python = "^2.7"
如果要更新项目支持的python版本,可以直接编辑文件,运行 poetry update .

如果你想使用多个版本的 python,你需要确保诗歌使用的是你正在使用的 python 版本的正确依赖项。要更改诗歌使用的特定版本,您应该使用 poetry env ,
  • poetry env list显示python诗歌可以使用的版本
  • poetry env use <python>切换诗歌以使用该版本。

  • 例如,在我的机器上,诗歌安装了 3 个虚拟环境,并且正在使用与 python3.6 相关的一个:
    ↪ poetry env list
    sipy-a9sqc5pb-py3.6 (Activated)
    sipy-a9sqc5pb-py3.7
    sipy-a9sqc5pb-py3.8
    我不确定这些虚拟环境如何与 pyenv 使用的 shiv 交互,但它们的 docs有一个相关的部分

    Managing Virtual Environments

    There is a pyenv plugin named pyenv-virtualenv which comes with various features to help pyenv users to manage virtual environments created by virtualenv or Anaconda. Because the activate script of those virtual environments are relying on mutating $PATH variable of user's interactive shell, it will intercept pyenv's shim style command execution hooks. We'd recommend to install pyenv-virtualenv as well if you have some plan to play with those virtual environments.

    关于python - Poetry 没有使用正确版本的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59810276/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com