poetry Virtual environment already activated

Viewed 13610

Running the following

poetry shell

returns the following error

/home/harshagoli/.poetry/lib/poetry/_vendor/py2.7/subprocess32.py:149: RuntimeWarning: The _posixsubprocess module is not being used. Child process reliability may suffer if your program uses threads.                                                                                                                                                                                    
  "program uses threads.", RuntimeWarning)                                                                                                                                                    
The currently activated Python version 2.7.17 is not supported by the project (^3.7).                                                                                                         
Trying to find and use a compatible version.                                                                                                                                                  
Using python3 (3.7.5)                                                                                                                                                                         
Virtual environment already activated: /home/harshagoli/.cache/pypoetry/virtualenvs/my-project-0wt3KWFj-py3.7

How can I get past this error? Why doesn't this command work?

4 Answers

I'd have to do the following

source "$( poetry env list --full-path | grep Activated | cut -d' ' -f1 )/bin/activate"

poetry shell is a really buggy command, and this is often talked about among the maintainers. A workaround for this specific issue is to activate the shell manually. It might be worth aliasing the following

source $(poetry env info --path)/bin/activate

so you need to paste this into your .bash_aliases or .bashrc

alias acpoet="source $(poetry env info --path)/bin/activate"

Now you can run acpoet to activate your poetry env (don't forget to source your file to enable the command)

It's similar to activating a normal virtual environment. But we need to find out path of the poetry virtual env.

We can find the path via poetry env info --path

source $(poetry env info --path)/bin/activate

Explained in this poetry demo.

If you've installed poetry using the traditional pip command, poetry will be limited to create virtual environments for the python version for which it has been installed.

Try uninstalling poetry using:

pip3 uninstall poetry

Then reinstall using:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

This worked for me.

Related