-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Poetry stuck at pyenv
Python version active during install-poetry
, broken after version uninstall
#4317
Comments
Hello @sandpipersburg, thanks a lot for your detailed issue report 👍 The short answers are:
The "pyenv workflow" doesn't work any longer, because the We are still looking for a user friendly alternative to define the python interpreter for the fresh venv. One solution under discussion is #4179 Another solution that come to my mind these days is something like fin swimmer |
I tried to execute After that I tried to execute I think this is the expected behavior presented by @sandpipersburg , but how about it? ▲ test/ poetry env use `which python`
NoCompatiblePythonVersionFound
The specified Python version (3.7.10) is not supported by the project (^3.8.8).
Please choose a compatible version or loosen the python constraint specified in the pyproject.toml file.
at ~/Library/Application Support/pypoetry/venv/lib/python3.8/site-packages/poetry/utils/env.py:676 in create_venv
672│ # If an executable has been specified, we stop there
673│ # and notify the user of the incompatibility.
674│ # Otherwise, we try to find a compatible Python version.
675│ if executable:
→ 676│ raise NoCompatiblePythonVersionFound(
677│ self._poetry.package.python_versions, python_patch
678│ )
679│
680│ io.write_line( |
I think this change although understandable is a bit unfortunate, as the pyenv + poetry workflow is quite popular and powerful. It would be good to at least explain this limitation in the documentation, though. I spent hours today trying to figure out why the workflow was broken, before I noticed it was working fine with the old get-poetry.py |
Any update / solution on this? I would love to keep mantaining my 'pyenv workflow' using poetry as smooth as possible. Thanks in advance! |
The next preview release will contain an experimental option to detect the current activated python, regardless on how poetry was installed. See #4852 Poetry's own environment shouldn't break anymore, when the Python version used during installation get's removed. Symlinks are not used anymore: |
Just in case someone end up here after hours debugging do the usual flow then |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
-vvv
option).install-poetry.py
Issue
Below scenarios demonstrate that:
install-poetry.py
, does not recognize the changes in Python version made viapyenv local <version>
. The expected behavior is to recognize Python version activated via pyenv. Similar issue: Poetry does not use active pyenv when creating virtual environment #651install-poetry.py
, was uninstalled via pyenv.Out-of-the-head suggestion is that
/Users/username/Library/Application Support/pypoetry/venv/bin/python
should link to pyenv Python shims, not to a specific pyenv Python version, as it happens currently.The environment:
.python-version
file. No other versions of Python installed via pyenvinstall-poetry.py
from the Poetry project dir, i.e. an active version of Python at a time of installation was 3.8.8.zshrc
:export PATH="$PATH:$HOME/.local/bin"
,echo $PATH
output:/Users/username/.pyenv/shims:/usr/local/bin:<skipped>:/Users/username/.local/bin
pyproject.toml
specifies Python version requirement via[tool.poetry.dependencies]
:python = "^3.8.8"
poetry.lock
specifies Python version requirement:python-versions = "^3.8.8"
poetry.toml
:in-project = true
.venv
present in a Poetry project dirCommands in below scenarios executed from Poetry project dir
/Users/username/workspace/project/
.Scenario 1 (positive). Poetry Python version is the same as pyenv Python version:
pyenv versions
. The result (w
andp
are softlinks toworkspace
andproject
dirs):python --version
. The result:Python 3.8.8
poetry run python --version
. The result:Creating virtualenv project in /Users/username/workspace/project/.venv Python 3.8.8
Scenario 2 (negative). Switchinig Python version via pyenv:
.venv
from Poetry project dirpyenv install 3.7.11
,pyenv local 3.7.11
pyenv versions
. The result:system * 3.7.11 (set by /Users/username/w/p/.python-version) 3.8.8
python --version
. The result:Python 3.7.11
poetry run python --version
. The result:Creating virtualenv project in /Users/username/workspace/project/.venv Python 3.8.8
Expected result:
poetry prints Python version
Python 3.7.11
, or maybe a Python version compatibility error (because the Poetry project requires a version 3.8.8 or later).Scenario 3 (negative). Uninstalling of non-active pyenv Python version,
.venv
is still present:pyenv uninstall 3.8.8
, after that:poetry run python --version
. The result:Expected result:
Poetry is not broken, and either prints the actual Python version, or a reasonable and meaningful error.
Scenario 4 (negative). Uninstalling of non-active pyenv Python version,
.venv
is absent:.venv
from Poetry project dirpoetry run python --version
. The result:the same result as for [Scenario 3].
Expected result:
The same expected result as for [Scenario 3].
The text was updated successfully, but these errors were encountered: