python-poetry / poetry-plugin-shell

MIT License
0 stars 1 forks source link

Poetry does not automatically switch venvs in venv-activated shells #19

Open nschrader opened 3 years ago

nschrader commented 3 years ago

Issue

Create two blank projects

/t/test> poetry new a
Created package a in a
/t/test> poetry new b
Created package b in b
/t/test> cd a

Create a's venv

/t/t/a> poetry shell
Creating virtualenv a-sARTaVSs-py3.8 in ~/.cache/pypoetry/virtualenvs
Spawning shell within ~/.cache/pypoetry/virtualenvs/a-sARTaVSs-py3.8
source ~/.cache/pypoetry/virtualenvs/a-sARTaVSs-py3.8/bin/activate.fish
Welcome to fish, the friendly interactive shell
Type `help` for instructions on how to use fish
(a-sARTaVSs-py3.8)  /t/t/a> exit

We quitted a's venv, now create b's

/t/t/a> cd ../b
/t/t/b> poetry shell
Creating virtualenv b-Eo6UuKir-py3.8 in ~/.cache/pypoetry/virtualenvs
Spawning shell within ~/.cache/pypoetry/virtualenvs/b-Eo6UuKir-py3.8
source ~/.cache/pypoetry/virtualenvs/b-Eo6UuKir-py3.8/bin/activate.fish
Welcome to fish, the friendly interactive shell
Type `help` for instructions on how to use fish

We're still in b's venv, now let's go to a's project

(b-Eo6UuKir-py3.8) /t/t/b> cd ../a
(b-Eo6UuKir-py3.8) /t/t/a> poetry env info

Virtualenv
Python:         3.8.5
Implementation: CPython
Path:           ~/.cache/pypoetry/virtualenvs/b-Eo6UuKir-py3.8
Valid:          True

System
Platform: linux
OS:       posix
Python:   /usr

Crap, we are still in b's venv... If we run poetry install we'll install a's dependencies in b's venv But there is a way out, eventhough the prompt is wrong (should be a-sARTaVSs-py3.8)

(b-Eo6UuKir-py3.8) /t/t/a> poetry env use python
Using virtualenv: ~/.cache/pypoetry/virtualenvs/a-sARTaVSs-py3.8
(b-Eo6UuKir-py3.8) /t/t/a> poetry env info

Virtualenv
Python:         3.8.5
Implementation: CPython
Path:           ~/.cache/pypoetry/virtualenvs/a-sARTaVSs-py3.8
Valid:          True

System
Platform: linux
OS:       posix
Python:   /usr

Now we are in a's venv (the right one), let's go back to b's project folder

(b-Eo6UuKir-py3.8) /t/t/a> cd ../b
(b-Eo6UuKir-py3.8) /t/t/b> poetry env info

Virtualenv
Python:         3.8.5
Implementation: CPython
Path:           ~/.cache/pypoetry/virtualenvs/b-Eo6UuKir-py3.8
Valid:          True

System
Platform: linux
OS:       posix
Python:   /usr

Surprisingly, on the way back everything is alright