Could not install packages due to an EnvironmentError: [Errno 13] Permission denied

avatar
Borislav Hadzhiev

Last updated: Apr 9, 2024
12 min

banner

# Table of Contents

  1. Could not install packages due to an EnvironmentError: [Errno 13] Permission denied
  2. Could not install packages due to an EnvironmentError: HTTPSConnectionPool

# Could not install packages due to an EnvironmentError: [Errno 13] Permission denied

The error "Could not install packages due to an EnvironmentError: [Errno 13] Permission denied" occurs when we try to install a package in a folder where we don't have the necessary permissions.

To solve the error, run the command with the --user option, e.g. pip install numpy --user.

shell
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/usr/lib/python2.7/dist-packages' Consider using the --user option or check the permissions.

# Using the --user flag to solve the error

One way to solve the error is to run the pip install command with the --user option.

shell
pip install <package-name> --user # ๐Ÿ‘‡๏ธ For Python 3 user pip3 pip3 install <package-name> --user python -m pip install <package-name> --user python3 -m pip install <package-name> --user # ๐Ÿ‘‡๏ธ py alias for Windows py -m pip install <package-name> --user

installing with user flag

Make sure to replace the <package-name> placeholder with the actual name of the package, e.g. pip install numpy --user.

The --user option installs the package in the user's home directory.

The command basically installs the package scoped to the specific user, not for the entire system. This helps with permission issues.

However, the --user option wouldn't work if you have a virtual environment active.

# Run the installation command with elevated permissions

Another way to solve the error is to run the command with elevated privileges by prefixing it with sudo.

shell
sudo pip install <package-name> --user sudo pip3 install <package-name> --user sudo python -m pip install <package-name> --user sudo python3 -m pip install <package-name> --user

# Create a virtual environment

Alternatively, you can create a virtual environment.

  1. Create a virtual environment.
  2. Activate the virtual environment.
  3. Run the pip install command with the virtual environment active.
shell
# ๐Ÿ‘‡๏ธ Use the correct version of Python when creating VENV python3 -m venv venv # ๐Ÿ‘‡๏ธ Activate on Unix or MacOS source venv/bin/activate # ๐Ÿ‘‡๏ธ Activate on Windows (cmd.exe) venv\Scripts\activate.bat # ๐Ÿ‘‡๏ธ Activate on Windows (PowerShell) venv\Scripts\Activate.ps1 # ๐Ÿ‘‡๏ธ Install the specific package in the virtual environment pip install numpy

If the python3 -m venv venv command fails, try issuing one of the following 2 commands:

  • python -m venv venv
  • py -m venv venv

Make sure to use the correct command to activate your virtual environment depending on your operating system and your shell.

Your virtual environment will use the version of Python that was used to create it.

Make sure to not create your virtual environment as root, e.g. with sudo because then you'd only permit root users to install packages.

If you created your virtual environment using sudo, try changing its permissions or recreate it without sudo.

shell
sudo chmod -R 777 venv

The command above assumes that your virtual environment is in a folder called venv.

777 means granting all users full access to the contents of the directory.

If that didn't work, try upgrading your pip version.

# Upgrade your pip version

Here are the commands for upgrading pip on all operating systems.

Which command works depends on your operating system and your version of Python.

shell
# ๐Ÿ‘‡๏ธ If you have pip already installed pip install --upgrade pip # ๐Ÿ‘‡๏ธ If your pip is aliased as pip3 (Python 3) pip3 install --upgrade pip # ๐Ÿ‘‡๏ธ If you don't have pip in your PATH environment variable python -m pip install --upgrade pip # ๐Ÿ‘‡๏ธ If you don't have pip in your PATH environment variable python3 -m pip install --upgrade pip # ๐Ÿ‘‡๏ธ If you have easy_install easy_install --upgrade pip # ๐Ÿ‘‡๏ธ If you get a permissions error sudo easy_install --upgrade pip # ๐Ÿ‘‡๏ธ If you get a permissions error when upgrading pip pip install --upgrade pip --user # ๐Ÿ‘‡๏ธ Upgrade pip scoped to the current user (if you get a permissions error) python -m pip install --user --upgrade pip python3 -m pip install --user --upgrade pip # ๐Ÿ‘‡๏ธ Installing directly from get-pip.py (MacOS and Linux) curl https://bootstrap.pypa.io/get-pip.py | python # ๐Ÿ‘‡๏ธ If you get permissions issues curl https://bootstrap.pypa.io/get-pip.py | sudo python # ๐Ÿ‘‡๏ธ Alternative for Ubuntu/Debian sudo apt-get update && apt-get upgrade python-pip # ๐Ÿ‘‡๏ธ Alternative for Red Hat / CentOS / Fedora sudo yum install epel-release sudo yum install python-pip sudo yum update python-pip

If you get the error "ModuleNotFoundError: No module named 'pip' in Python", check out my other article:

If the commands from the code sample didn't work for you, click on the "Install pip in Python" link.

After you upgrade pip, upgrade setuptools as well.

shell
pip install --upgrade setuptools pip3 install --upgrade setuptools python3 -m pip install --upgrade setuptools

Try installing the package with pip and setuptools upgraded.

shell
pip install <package-name> # ๐Ÿ‘‡๏ธ For Python 3 user pip3 pip3 install <package-name> python -m pip install <package-name> python3 -m pip install <package-name>

If that didn't help, try running CMD as an administrator.

# Run CMD as an administrator

To run CMD as an administrator:

  1. Click on the search bar and type "cmd".
  2. Right-click on "Command Prompt".
  3. Click on "Run as administrator".

windows run cmd as administrator

  1. Once you open the shell as an administrator, rerun the pip install command.
shell
pip install <package-name> pip3 install <package-name> python -m pip install <package-name> python3 -m pip install <package-name>
If you use PyCharm, close the IDE, right-click on it and open PyCharm as an administrator and then run the pip install command.

If opening CMD as an administrator didn't help, try to open PowerShell as an administrator and run the command.

To run PowerShell as an administrator:

  1. Click on the search bar and type "PowerShell".
  2. Right-click on "Windows PowerShell".
  3. Click on "Run as administrator".

windows run powershell as administrator

Another common cause of the error is having other Python scripts running in the background when running the pip install command.

Windows throws "EnvironmentError: [Errno 13] Permission denied" when the file is locked by another process.

If the error persists, change the user's access permissions.

# Change the user's access permissions

The error "Could not install packages due to an EnvironmentError: [Errno 13] Permission denied" is often caused because the user doesn't have access to modify the directory where the package should be installed.

To solve the error, allow the user full access to the Python directory.

To change the access permissions for the user:

  1. Open the folder where you installed Python e.g. C:\Program Files (x86)\Python310.

You can find where Python is installed with either of the following 2 commands.

shell
where python python -c "import os, sys; print(os.path.dirname(sys.executable))"
  1. Once you open the directory where Python is installed, right-click on the "Python" or "Python310" folder and click "Properties".

rightclick properties

  1. Go to the "Security" tab and click on the "Edit" button.

click security tab and edit

  1. Allow "Full control" to your user or the entire "Users" group.

allow full control to users

  1. Click on "Apply".
  2. Run the pip install <package-name> command again.

Once you give "Full access" permissions to the user, you should be able to pip install packages without getting any errors.

If you have a virtual environment active, your Python location will be scoped to the specific virtual environment.

In other words, you have to edit the permissions for the user for a Python folder that's located in your project.

You can run the where python command with your virtual environment active to find the directory.

# Set "include-system-site-packages" to "true"

If you use a virtual environment, another thing that might help is to:

  1. Open your venv folder.
  2. Click on the pyvenv.cfg file.
  3. Set the include-system-site-packages property to true.
  4. Save the file.
  5. Rerun the pip install command.

include system site packages

# Conclusion

The solve the "Could not install packages due to an EnvironmentError: [Errno 13] Permission denied" error:

  1. Run the pip install command with the --user option.
  2. Create a virtual environment and install the package in it.
  3. Grant the user full access to the Python directory.

# Could not install packages due to an EnvironmentError: HTTPSConnectionPool

The error "Could not install packages due to an EnvironmentError: HTTPSConnectionPool" occurs when we try to install a package without having the necessary permissions.

To solve the error, add trusted hosts or run the pip install command with the --user option.

shell
Could not install packages due to an EnvironmentError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Max retries exceeded with url: (Caused by ProtocolError('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None)))

The most common reason the error is caused is running the pip install command from behind a proxy.

This often happens if your corporate network is protected by a firewall.

One way to solve the error is to add trusted hosts.

shell
pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name> # ๐Ÿ‘‡๏ธ pip3 (for Python 3) pip3 install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name> python -m pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name> # ๐Ÿ‘‡๏ธ For Python3 python3 -m pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name> # ๐Ÿ‘‡๏ธ py alias (Windows) py -m pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name>

If you get a permissions error, try prefixing the command with sudo.

shell
sudo pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name> # ๐Ÿ‘‡๏ธ pip3 (for Python 3) sudo pip3 install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org <package-name>

Notice that the command ends with <package-name>. Make sure to replace the placeholder with the name of the package you are trying to install, e.g. numpy or tensorflow.

You can also use a command to set the trusted hosts in a pip.conf or pip.ini file, so you don't have to add the --trusted-host option every time you need to install a package.

shell
pip config set global.trusted-host "pypi.python.org pypi.org files.pythonhosted.org" --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org

add trusted hosts to pip conf ini

The command automatically adds the trusted hosts to your pip.conf or pip.ini file and prints the location of the file.

If you are running the command from behind a proxy, add the --proxy option.

shell
sudo pip install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org --proxy=127.0.0.1:3128 <package-name> # ๐Ÿ‘‡๏ธ pip3 (for Python 3) sudo pip3 install --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org --proxy=127.0.0.1:3128 <package-name>

The --proxy option is used to specify a proxy in the form scheme://[user:passwd@]proxy.server:port.

If that didn't work, try connecting to another network that isn't behind a firewall and rerun the pip install command.

Likely your company's firewall is not allowing you to reach the pypi servers.

You could also contact your company's system administrator.

Something else you might try to do is increase the timeout for the pip install command.

The error is also caused when the pip install command times out because your wifi is too slow.

shell
sudo pip install --default-timeout=180 numpy sudo pip3 install --default-timeout=180 numpy

Make sure to replace numpy with the name of the package you are trying to install.

Alternatively, you can try to run the pip install command with the --user option.

# Install the package using the --user option

The error "Could not install packages due to an EnvironmentError: HTTPSConnectionPool" occurs when we don't have the necessary permissions to install a package.

To solve the error, run the command with the --user option, e.g. pip install numpy --user.

One way to solve the error is to run the pip install command with the --user option.

shell
pip install <package-name> --user pip3 install <package-name> --user python -m pip install <package-name> --user python3 -m pip install <package-name> --user

Make sure to replace the <package-name> placeholder with the actual name of the package, e.g. pip install tensorflow --user.

The --user option installs the package in the user's home directory.

The command basically installs the package scoped to the specific user, not for the entire system. This helps with permission issues.

However, the --user option wouldn't work if you have a virtual environment active.

Another thing you could try is to elevate your permissions using sudo.

shell
sudo pip install <package-name> sudo pip3 install <package-name> sudo python -m pip install <package-name> sudo python3 -m pip install <package-name>

If that didn't help, try creating a virtual environment.

# Create a virtual environment

To solve the "Could not install packages due to an EnvironmentError: HTTPSConnectionPool" error:

  1. Create a virtual environment.
  2. Activate the virtual environment.
  3. Run the pip install command with the virtual environment active.
shell
# ๐Ÿ‘‡๏ธ Use the correct version of Python when creating VENV python3 -m venv venv # ๐Ÿ‘‡๏ธ Activate on Unix or MacOS source venv/bin/activate # ๐Ÿ‘‡๏ธ Activate on Windows (cmd.exe) venv\Scripts\activate.bat # ๐Ÿ‘‡๏ธ Activate on Windows (PowerShell) venv\Scripts\Activate.ps1 # ๐Ÿ‘‡๏ธ Install the specific package in the virtual environment pip install numpy

If the python3 -m venv venv command doesn't work, try the following 2 commands:

  • python -m venv venv
  • py -m venv venv

Make sure to use the correct command to activate your virtual environment depending on your operating system and your shell.

Your virtual environment will use the version of Python that was used to create it.

Make sure to not create your virtual environment as root, e.g. with sudo because then you'd only permit root users to install packages.

If you created your virtual environment using sudo, try changing its permissions or recreate it without sudo.

shell
sudo chmod -R 777 venv

The command above assumes that your virtual environment is in a folder called venv.

777 means granting all users full access to the contents of the directory.

If that didn't help, try to run CMD as an administrator.

# Run CMD as an administrator

To run CMD as an administrator:

  1. Click on the search bar and type "cmd".
  2. Right-click on "Command Prompt".
  3. Click on "Run as administrator".

windows run cmd as administrator

  1. Once you open the shell as an administrator, rerun the pip install command.
shell
pip install <package-name> pip3 install <package-name> python -m pip install <package-name> python3 -m pip install <package-name>
If you use PyCharm, close the IDE, right-click on it and open PyCharm as an administrator and then run the pip install command.

If opening CMD as an administrator didn't help, try to open PowerShell as an administrator and run the command.

To run PowerShell as an administrator:

  1. Click on the search bar and type "PowerShell".
  2. Right-click on "Windows PowerShell".
  3. Click on "Run as administrator".

windows run powershell as administrator

Another common cause of the error is having other Python scripts running in the background when running the pip install command.

Windows throws "Could not install packages due to an EnvironmentError: HTTPSConnectionPool" when the file is locked by another process.

If the error persists, change the user's access permissions.

# Change the user's access permissions

The error "Could not install packages due to an EnvironmentError: HTTPSConnectionPool" is often caused because the user doesn't have access to modify the directory where the package should be installed.

To solve the error, allow the user full access to the Python directory.

To change the access permissions for the user:

  1. Open the folder where you installed Python e.g. C:\Program Files (x86)\Python310.

You can find where Python is installed with either of the following 2 commands.

shell
where python python -c "import os, sys; print(os.path.dirname(sys.executable))"
  1. Once you open the directory where Python is installed, right-click on the "Python" or "Python310" folder and click "Properties".

rightclick properties

  1. Go to the "Security" tab and click on the "Edit" button.

click security tab and edit

  1. Allow "Full control" to your user or the entire "Users" group.

allow full control to users

  1. Click on "Apply".
  2. Run the pip install <package-name> command again.

Once you give "Full access" permissions to the user, you should be able to pip install packages without getting any errors.

If you have a virtual environment active, your Python location will be scoped to the specific virtual environment.

In other words, you have to edit the permissions for the user for a Python folder that's located in your project.

You can run the where python command with your virtual environment active to find the directory.

If that didn't resolve the error, try upgrading your version of pip.

Here are the commands for upgrading pip on all operating systems.

Which command works depends on your operating system and your version of Python.

shell
# ๐Ÿ‘‡๏ธ If you have pip already installed pip install --upgrade pip # ๐Ÿ‘‡๏ธ If your pip is aliased as pip3 (Python 3) pip3 install --upgrade pip # ๐Ÿ‘‡๏ธ If you don't have pip in your PATH environment variable python -m pip install --upgrade pip # ๐Ÿ‘‡๏ธ If you don't have pip in your PATH environment variable python3 -m pip install --upgrade pip # ๐Ÿ‘‡๏ธ If you have easy_install easy_install --upgrade pip # ๐Ÿ‘‡๏ธ If you get a permissions error sudo easy_install --upgrade pip # ๐Ÿ‘‡๏ธ If you get a permissions error when upgrading pip pip install --upgrade pip --user # ๐Ÿ‘‡๏ธ Upgrade pip scoped to the current user (if you get a permissions error) python -m pip install --user --upgrade pip python3 -m pip install --user --upgrade pip # ๐Ÿ‘‡๏ธ Installing directly from get-pip.py (MacOS and Linux) curl https://bootstrap.pypa.io/get-pip.py | python # ๐Ÿ‘‡๏ธ If you get permissions issues curl https://bootstrap.pypa.io/get-pip.py | sudo python # ๐Ÿ‘‡๏ธ Alternative for Ubuntu/Debian sudo apt-get update && apt-get upgrade python-pip # ๐Ÿ‘‡๏ธ Alternative for Red Hat / CentOS / Fedora sudo yum install epel-release sudo yum install python-pip sudo yum update python-pip

If you get the error "ModuleNotFoundError: No module named 'pip' in Python", check out my other article:

If the commands from the code sample didn't work for you, click on the "Install pip in Python" link.

After you upgrade pip, upgrade setuptools as well.

shell
pip install --upgrade setuptools pip3 install --upgrade setuptools python3 -m pip install --upgrade setuptools

Try to run the pip install command now that pip and setuptools are upgraded.

# Set "include-system-site-packages" to "true"

If you use a virtual environment, another thing that might help is to:

  1. Open your venv folder.
  2. Click on the pyvenv.cfg file.
  3. Set the include-system-site-packages property to true.
  4. Save the file.
  5. Rerun the pip install command.

include system site packages

# Conclusion

To solve the "Could not install packages due to an EnvironmentError: HTTPSConnectionPool":

  1. Add trusted hosts to be able to access pypi from your machine.
  2. Run the pip install command with the --user option.
  3. Run the pip install command prefixed with sudo.
  4. Try creating a virtual environment and install the package in it.
  5. Run CMD as an administrator before installing the package.
I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.

Copyright ยฉ 2024 Borislav Hadzhiev