Skip to main content

How to Resolve Python Pip "ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

When working within an active Python virtual environment (venv or Conda env), attempting to install a package using pip install --user <package-name> will typically result in the error: ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv. This error highlights a conflict between the purpose of virtual environments (isolation) and the --user flag's intention (installing for the user globally).

This guide explains why this error occurs and provides the correct approaches depending on your installation goal.

Understanding the Error: Virtual Environment Isolation vs. --user Installs​

  • Virtual Environments (venv, Conda envs): Designed to create isolated Python environments for specific projects. Packages installed when a venv is active are placed inside that venv's site-packages directory, separate from the global Python installation and other projects. This prevents dependency conflicts. Standard virtual environments deliberately do not see or interact with the user's global site-packages by default.
  • pip install --user: This flag tells pip to install a package into the current user's personal site-packages directory (e.g., ~/.local/lib/pythonX.Y/site-packages or %APPDATA%\Python\...), making it available to that user across different projects outside of specific virtual environments.

The error occurs because these two concepts are usually mutually exclusive by design. When a standard virtual environment is active, pip operates within that isolated environment. The --user flag attempts to force an installation outside this isolated scope into the user's global space, which the active venv cannot (and should not, by default) "see" or manage.

Cause 1: Using the --user Flag Inside an Active Virtual Environment​

This is the most direct cause – you manually typed pip install --user <package-name> while your virtual environment was activated.

Example Error Scenario:

# 1. Activate a virtual environment
(base) C:\Users\User\project> venv\Scripts\activate.bat
(venv) C:\Users\User\project>

# 2. Attempt --user install inside the active venv
(venv) C:\Users\User\project> pip install requests --user
# ⛔️ ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

If your goal is to install the package for the current project within the active virtual environment, simply remove the --user flag. This is the standard way to install packages into a venv.

# Ensure your virtual environment is active
(venv) C:\Users\User\project>

# ✅ Install package INTO the active virtual environment
pip install requests
# Or: python -m pip install requests

# Output should show successful installation within the venv's site-packages.

This correctly installs the package into the isolated environment (venv\Lib\site-packages), which is usually the desired behavior.

Solution 2: Deactivate Venv Before Using --user (If User Install Intended)​

If your intention was actually to install the package globally for your user account (outside of any specific project venv), you need to deactivate the virtual environment first.

# 1. Deactivate the current virtual environment
(venv) C:\Users\User\project> deactivate
C:\Users\User\project>

# 2. Now run the --user install (installs to user's global site-packages)
pip install requests --user
# Or:
python -m pip install requests --user

This correctly performs the user-level installation using your system's default pip (or the one associated with the Python found first in your PATH after deactivation).

Cause 2: IDE/Tool Implicitly Using --user (e.g., VS Code/Pylint Install)​

Sometimes, an IDE or a related tool might attempt a package installation (like installing a linter like pylint when prompted) and might incorrectly add the --user flag even when a virtual environment is active within the IDE's context (e.g., selected interpreter). This triggers the same error.

Solution 3: Configure IDE/Tool Correctly​

If the error appears when your IDE tries to install something:

  • Look for settings within the IDE related to package installation or terminal behavior. Ensure it's not configured to automatically add the --user flag when installing into project environments.
  • Install the required tool (like pylint) manually in the activated virtual environment's terminal within the IDE using pip install pylint (without --user).
  • Ensure the IDE is correctly recognizing and using the Python interpreter from your virtual environment.

Cause 3: Global Pip Configuration (user = true in pip.conf)​

It's possible (though less common) to configure pip globally to always perform user installs by default by setting user = true in its configuration file (pip.conf or pip.ini). This global setting might conflict with the isolated nature of virtual environments.

Solution 4: Check and Modify pip.conf / pip.ini​

  1. Locate pip.conf/pip.ini: The location depends on your OS. Common locations:
    • Linux/macOS: ~/.config/pip/pip.conf, ~/.pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini, %HOME%\pip\pip.ini (You can often find the user config location by running pip config -v list)
  2. Check for user = true: Open the file and look in the [global] or [install] sections for a line like user = true.
  3. Modify: If found, either comment it out (# user = true) or change it to user = false if you generally don't want default user installs. Save the file.
  4. Retry the installation within your virtual environment (without the --user flag).

Some sources suggest editing the pyvenv.cfg file inside your venv folder and setting include-system-site-packages = true.

  • What it does: This makes packages installed in the global site-packages (including the user site-packages) visible inside your virtual environment. Because the user site-packages are now visible, pip install --user inside the venv might stop erroring (as it sees the target location).
  • Why it's NOT recommended: This breaks the isolation which is the primary benefit of using a virtual environment. It can lead to confusing dependency conflicts between your project's specific needs and globally installed packages. Avoid this setting unless you have a very specific, advanced reason and fully understand the consequences. It doesn't fix the underlying conflict between the intent of --user and the intent of a standard venv.

Conclusion​

The error ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv. occurs because standard virtual environments are isolated and the --user flag tries to install outside that isolation.

The correct solutions depend on your goal:

  1. If installing FOR the project: Activate the virtual environment and run pip install <package-name> (NO --user flag).
  2. If installing GLOBALLY for the user: Deactivate the virtual environment first, then run pip install <package-name> --user.
  3. If an IDE causes the error: Configure the IDE to install packages correctly within the selected virtual environment (usually without --user).
  4. Check pip.conf: Ensure user = true isn't set globally if that's not your desired default behavior.

Do not set include-system-site-packages = true in pyvenv.cfg as a fix for this error, as it compromises the benefits of using a virtual environment.