Poetry doesn't use the correct version of Python Poetry doesn't use the correct version of Python python python

Poetry doesn't use the correct version of Python


pyproject.toml is used to define all the dependencies for your project, including the supported python version.

The line your complaining about is just saying that the versions of python supported by the project is python2.7 or greater, this is independent of what versions of python you've installed with pyenv.

python = "^2.7"

If you want to update the versions of python supported by the project you can edit the file directly and run poetry update.


If you want to use multiple versions of python you need to make sure poetry is using the correct dependencies for the version of python you are using. To change the specific version poetry is using you should use poetry env,

  • poetry env list show the versions of python poetry can use
  • poetry env use <python> switches poetry to use that version.

For instance on my machine poetry has 3 virtual environments installed and is using the one associated with python3.6:

↪ poetry env listsipy-a9sqc5pb-py3.6 (Activated)sipy-a9sqc5pb-py3.7sipy-a9sqc5pb-py3.8

I'm not sure how these virtual environments with interact with the shivs used by pyenv but their docs have a section relating to it

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.


Alright, I figured the problem. A little embarrassingly, I had not run pyenv shell 3.8.1 before running any of the other commands. Everything works now. Thank you all for your efforts.


Even though this issue has been resolved, I am writing this for somebody who comes across this problem again.After all attempts my python -V always resulted in 2.7 and no discussions mentioned running pyenv shell (surprising to me!)Adding pyenv to path

$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

In my case I had to add it to .bashrc and not bash_profile.https://ggkbase-help.berkeley.edu/how-to/install-pyenv/

Worked!