[Python] Why is my poetry virtualenv using the system python instead of the pyenv python that...

Discussão em 'Python' iniciado por Stack, Julho 2, 2025.

  1. Stack

    Stack Membro Participativo

    I've recently installed both Pyenv and Poetry and want to create a new Python 3.8 project. I've set both the global and local versions of python to 3.8.1 using the appropriate Pyenv commands (pyenv global 3.8.1 for example). When I run pyenv version in my terminal the output is 3.8.1. as expected.

    Now, the problem is that when I create a new python project with Poetry (poetry new my-project), the generated pyproject.toml file creates a project with 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"


    It seems that Poetry defaults back to the system version of Python. How do I change this so that it uses the version installed with Pyenv?

    Edit

    I'm using MacOS, which comes bundled with Python 2.7. I think that might be causing some of the issues here. I've reinstalled Python 3.8 again with Pyenv, but when I hit Poetry install I get the following error:

    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.


    Should I create an environment explicitly for the project using Pyenv or should the project be able to access the correct Python version after running pyenv local 3.8.1.? When I do the latter, nothing changes and I still get the same errors.

    Continue reading...

Compartilhe esta Página