VSCode doesn't show poetry virtualenvs in select interpreter option

user8491363 picture user8491363 · Jan 23, 2020 · Viewed 10.5k times · Source

I need help. VSCode will NEVER find poetry virtualenv interpreter no matter what I try.

Installed poetry Python package manager using a standard $ curl method as explained in the official documentation.

Started a project by $ poetry new finance-essentials_37-64, installed poetry environment with $ poetry install.

So now I can see that I indeed have a virtual environment by:

Jaepil@Jaepil-PC MINGW64 /e/VSCodeProjects/finance_essentials_37-64 $ poetry env list 
>> finance-essentials-37-64-SCQrHB_N-py3.7 (Activated)

and this virtualenv is installed at: C:\Users\Jaepil\AppData\Local\pypoetry\Cache\virtualenvs, which has finance-essentials-37-64-SCQrHB_N-py3.7 directory.

However, VSCode is unable to find this virtualenv in its 'select interpreter' command. I only see a bunch of Anaconda and Pipenv environments but not the poetry environment's interpreter that I've just made.

I also added "python.venvPath": "~/.cache/pypoetry/virtualenvs", to my settings.json as suggested in here, but to no avail. Still doesn't work.

I also tried an absolute path, by adding "python.venvPath": "C:\\Users\\Jaepil\\AppData\\Local\\pypoetry\\Cache\\virtualenvs", to the same settings, but it also doesn't work.

VSCode settings reference states that it has python.poetryPath as a default but it doesn't seem to work either. Should I change the default value "poetry" in this case?

python.poetryPath

"poetry"

Specifies the location of the Poetry dependency manager executable, if installed. The default value "poetry" assumes the executable is in the current path. The Python extension uses this setting to install packages when Poetry is available and there's a poetry.lock file in the workspace folder.

I'm on Windows 10 pro 64bit & Has Python 3.7.6 installed on the system.

PS C:\Users\Jaepil> python
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32

Answer

Christian H picture Christian H · Oct 19, 2020

You just need to type in your shell:

poetry config virtualenvs.in-project true

The virtualenv will be created inside the project path and vscode will recognize.


If you already have created your project, you need to re-create the virtualenv to make it appear in the correct place:

poetry env list  # shows the name of the current environment
poetry env remove <current environment>
poetry install  # will create a new environment using your updated configuration