Issue
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 <[email protected]>"]
[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.
Solution
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.
Answered By - P4nd4b0b3r1n0