Issue
I am attempting to create a poetry project with the latest version of python install via my pyenv installation with homebrew. The below terminal commands show the versions of pyenv and poetry that I have.
path/user % pyenv --version
pyenv 2.3.9
path/user % pyenv versions
system
* 3.9.6 (set by /Users/user/.pyenv/version)
path/user % poetry --version
Poetry (version 1.3.1)
path/user % poetry new venv
Created package venv in venv
path/user % ls
venv
path/user % cd venv
(base) user@user venv % ls
README.md pyproject.toml tests venv
(base) user@user venv % cat pyproject.toml
[tool.poetry]
name = "venv"
version = "0.1.0"
description = ""
authors = ["user <[email protected]>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.11"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
(base) user@user venv % poetry venv use 3.9.6
The command "venv" does not exist.
(base) user@user venv % poetry env 3.9.6
The command "env" does not exist.
Did you mean one of these?
env use
env info
env list
env remove
(base) user@user venv % poetry env use 3.9.6
The specified Python version (3.9.6) is not supported by the project (^3.11).
Please choose a compatible version or loosen the python constraint specified in the pyproject.toml file.
The issue I am having is that, despite only having python version 3.9.6 installed on my machine, the poetry project is being created with a default of python version 3.11 each time. What am I doing wrong and how do I solve the issue?
I attempted uninstalling and reinstalling both pyenv and poetry via homebrew. Before creating the poetry project, I also tried pyenv local 3.9.6
, but this didn't work, either.
Goal: Be able to create a poetry project poetry new venv
without having to manually update the pyproject.toml file each time.
Solution
By default Poetry initializes new projects and creates new venvs with the Python version that was used for installing Poetry itself.
This is why you have python = "^3.11"
in your pyproject.toml
.
The specified Python version (3.9.6) is not supported by the project (^3.11).
This method tells you, that your project aimed to be compatible for python >=3.11,<4.0, but you are trying to use a python3.9
interpreter. You have to manual edit the pyproject.toml
and set python = "^3.11"
to whatever fits your needs.
To enable Poetry to pick up the currently activated version of Python, you have to set the config option virtualenvs.prefer-active-python
to true
. See https://python-poetry.org/docs/configuration/#virtualenvsprefer-active-python-experimental
Please note that at the moment this option is not respected on poetry new
or poetry init
. Until https://github.com/python-poetry/poetry/pull/7100 is merged and released you still have to edit the pyproject.toml
by hand.
Answered By - finswimmer Answer Checked By - Marie Seifert (WPSolving Admin)