vscode-python: ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

Environment data

Version: 1.49.3 Commit: 2af051012b66169dde0c4dfae3f5ef48f787ff69 Date: 2020-10-02T17:56:11.027Z Electron: 9.2.1 Chrome: 83.0.4103.122 Node.js: 12.14.1 V8: 8.3.110.13-electron.0 OS: Linux x64 5.4.0-48-generic snap

Steps to reproduce:

python3 -m venv myenv
cd myenv
. bin/activate
code .

Then in vscode I get asked if I would like to install pylint. I click on “yes”.

The the error happens (this code was created/executed by vscode):

guettli@yoga15:~/projects/myenv$ source /home/guettli/projects/myenv/bin/activate
(myenv) guettli@yoga15:~/projects/myenv$ /home/guettli/projects/myenv/bin/python /home/guettli/.vscode/extensions/ms-python.python-2020.9.114305/pythonFiles/pyvsc-run-isolated.py pip install -U pylint --user
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

Expected behaviour

Since the interpreter is in a virtualenv, it would make sense to avoid --user.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 19
  • Comments: 18 (1 by maintainers)

Most upvoted comments

#14327 I was trying to upgrade ‘pip’ in my virtual environment. I got the same error.

One quick fix is :

  1. Go to the pyvenv.cfg file in the Virtual environment folder
  2. Set the include-system-site-packages to true and save the change
  3. Reactivate the virtual environment. This should work!

#14327 I was trying to upgrade ‘pip’ in my virtual environment. I got the same error.

One quick fix is :

1. Go to the `pyvenv.cfg` file in the Virtual environment folder

2. Set the `include-system-site-packages` to `true` and save the change

3. Reactivate the virtual environment.
   This should work!

worked perfectly for me, thanks!

As described in vscode#43347 setting python.globalModuleInstallation": true (Python: Global Module Installation) works for me as workaround.

Pip can install software in three different ways:

  1. At global level. I would avoid it
  2. At user level
  3. At virtualenv level. This is (at least for me) the preferred one.

I don’t think "python.globalModuleInstallation": true is a good solution.

Virtualenv is great, and disk space is cheap.

Just run cmd as administrator

Pip can install software in three different ways:

1. At global level. I would avoid it

2. At user level

3. At virtualenv level. This is (at least for me) the preferred one.

I don’t think "python.globalModuleInstallation": true is a good solution.

Virtualenv is great, and disk space is cheap.

It can install in two ways: global or at the user level. It’s just that virtualenvs put you in a new root for python, so you end up installing globally. However, it would be nice if it was detected that the user was using a virtualenv, with modifiable flags, so we could change the default value of that parameter depending on the case.

@guettli Using sudo before command fixes the issue: sudo pip install package-name

#14327 I was trying to upgrade ‘pip’ in my virtual environment. I got the same error.

One quick fix is :

1. Go to the `pyvenv.cfg` file in the Virtual environment folder

2. Set the `include-system-site-packages` to `true` and save the change

3. Reactivate the virtual environment.
   This should work!

worked perfectly for me, thanks!

'Great!

I can repro this.