Adventures in Machine Learning

Python Package Woes? Here’s How to Troubleshoot Pip Installations

PyTorch, Tensorflow, NumPy, Pandas, SciPy – these are just a few of the many Python packages that are essential for data analysts, software developers, and scientists. Installing these packages is relatively easy with the help of Package Installation Manager (Pip), Python’s default package manager.

However, depending on the operating system you’re using, Pip can sometimes show an error or a warning message, preventing you from installing a package or causing installation issues. In this article, we will help you troubleshoot some of the most common Pip-related issues.

We’ll focus on three main issues – Defaulting to User Installation, Verifying site-packages directory, and Location of System-wide directory – and provide step-by-step instructions to help you fix them.

Installing Python packages with Pip

Pip is a powerful package management system that

makes installing, upgrading, and removing Python packages a breeze. Essentially, Pip downloads packages from the Python Package Index (PyPI) and installs them on your system.

However, depending on the operating system or the installation directory, Pip may show an error message, which confuses users. We’ll now explore some of these issues and how to resolve them.

Why “Defaulting to User Installation” message occurs

When installing packages with Pip, you might have seen a warning message that says “Defaulting to User Installation because normal site-packages is not writable.” This message typically occurs when Pip doesn’t have root permissions or super-privileged access to write to the system-wide directory. The system-wide directory is the default installation directory where all Python packages are installed.

In most cases, this directory is /usr/local/lib/python3.x/site-packages. If Pip doesn’t have permission to write files there, it falls back to the user-wide directory ~/.local where packages are installed only for the current user, causing the “Defaulting to User Installation” message.

How to solve for Windows users

Windows users can run into this issue if they’re not running the command prompt as an administrator or haven’t installed Python with administrator privileges. In such cases, Pip doesn’t have permission to write to the system directory, and you’ll have to give the Pip installer full access to do so.

Here’s how you can fix it:

– Open the command prompt and execute it as an administrator

– Install Pip using the following command:


– After Pip is installed, you can install packages by running the following command:

pip install

Alternatively, you can customize the installation path for Pip packages by using virtual environments, which act as independent installations of Python with their own set of packages. This approach allows you to install packages without needing administrator privileges.

How to solve for Linux users

Linux users can encounter this issue if they don’t have root access, which is required to write to the system-wide directory. In some cases, users might have installed Python using the system’s package manager, which installs Python without root permissions.

There are a few ways to solve this problem:

– The simplest solution is to use sudo to grant Pip root permissions. You can install Pip by running the following command:

sudo apt-get install python3-pip

– If you’d like to install Python and Pip without root permissions, you can manually specify a different installation directory by using the –user option. Here’s how:

pip install –user pytorch

– Another option is to use Homebrew, which is a package manager for macOS and Linux systems. Homebrew allows you to install packages, including Python and Pip, without root privileges.

Here’s how:

brew install python

brew install pipenv

How to solve for Mac users

Mac users might encounter this issue when installing a package with Pip. The error message “Defaulting to User Installation because normal site-packages is not writable” could occur if the user doesn’t have permission to write to the system-wide directory, which is the default installation directory for Python packages.

To fix this, you can try using Homebrew, which allows you to install both Python and Pip without root permission. If you’ve already installed Pip using the default Python installation, you can manually specify a different installation directory by using the –user option.

Here’s how:

– Install Pip using Homebrew:

brew install python3

– Use the –user option to specify a different installation directory:

pip3 install –user numpy

Verifying site-packages directory

When installing Python packages with Pip, it’s important to check the installation directories to ensure that the packages are installed correctly. One way to check is by running the following command:

python -m site

This command lists the directories in the Python installation where packages are installed. You should see the following line:

sys.path = [




If you don’t see this line, it means Pip has installed packages in the wrong directory, which could cause problems with importing packages later on.

Location of system-wide directory

The default installation directory for Python packages on most systems is /usr/local/lib/python3.x/site-packages for Python 3.x, where x varies depending on the Python version. If you’re not sure where your system-wide directory is, you can use the following command to find out:

python3 -m site | grep “site-packages” | head -1

This command displays the location of the system-wide directory on the terminal.

In most cases, you’ll see the following output:


This location is where Python packages are installed system-wide on macOS systems by default, and you may need root permission to access it.


Installing Python packages with Pip is straightforward, but it can cause issues if you’re not familiar with some of the common problems. In this article, we’ve covered some of the most significant issues users face when using Pip, and how to resolve them.

By following the step-by-step instructions provided, you can install and use Python packages with confidence, knowing that you’ve installed them correctly. 3) Adding “–user” flag when installing packages

Pip is a package management system that allows you to install and manage Python packages easily.

When installing packages with Pip, you can append the “–user” flag to install them in a user-specific directory rather than the system-wide directory. By doing so, you avoid write permission-related problems and allow Pip to install packages in a user-specific directory.

Why “–user” flag is needed

When using Pip to install packages, you may encounter error messages related to write permission. Pip installs packages to the system-wide directory by default, which requires root permission to write new files to this directory.

If Pip doesn’t have the required permissions, it may not be able to install packages. By using the “–user” flag, Pip installs packages to a user-specific directory, ~/Library/Python/3.x, where x is the version of Python you’re using.

This folder is located in the user’s home directory under the hidden .local directory. Installing packages in this directory doesn’t require root permission, so you should be able to install packages without issue.

How to add “–user” flag for Windows and Linux users

To add the “–user” flag while installing a Python package on Windows, follow these steps:

1. Open the Command Prompt as an administrator.

2. Type “pip install **package_name** –user” and hit enter.

On Linux, use the following command:

1. Open the terminal and enter the command “pip install **package_name** –user”.

2. If you don’t have root privileges, add sudo before the command as follows: sudo pip install **package_name** –user

When installed with the “–user” flag, the package will be installed in the user-wide directory rather than the system-wide directory.

You can use the “-m site” command to verify that the package has been installed in the correct directory.

4) Installing Python from source

When installing Python using a package management system like Apt or Homebrew, you may encounter permission-related issues. Installing Python from source enables you to have greater control over the installation process, giving you the ability to avoid permission issues and customize the installation according to your needs.

How to install Python from source for Linux users

To install Python from source, you will need to compile the source files and install the necessary dependencies. 1.

Download the latest Python source code from the official Python website. 2.

Install the dependencies. You’ll need a few development packages, including libssl-dev, which is required by the ssl module, and zlib1g-dev, which provides zlib support.

On Ubuntu or Debian, enter the following command:

sudo apt-get install build-essential libssl-dev zlib1g-dev libncurses5-dev libreadline-gplv2-dev libgdbm-dev libc6-dev libsqlite3-dev libbz2-dev

3. Extract the downloaded source code and enter the extracted directory.

4. Run the “configure” command, which checks for dependencies and creates a Makefile that is used to build and install Python.

./configure –prefix=”$HOME/.local”

5. Run the “

make” command to build Python from the source code.


6. Run the “

make install” command to install Python in the user-wide directory.

make install

After following these steps, you should be able to use Python from the command line.

Advantages of installing Python from source

There are several advantages to installing Python from source as opposed to using a package manager:

1. Avoid permission-related issues: Installing Python from source allows you to avoid permission-related issues since you’re not installing packages globally, but only for the current user.

This eliminates the need for root permissions. 2.

Customized installation: Installing Python from source gives you greater control over the installation process, allowing you to customize Python to meet your needs. This flexibility can be especially useful if you need to install specific modules or if you need to control the version of Python you’re using.

Limitations of installing Python from source

There are some limitations to installing Python from source:

1. Only for the current user: When you install Python from source, it is only installed for the current user and not system-wide.

Other users on the system will need to repeat the installation process. 2.

Repeat the process for updates: When a new version of Python is released, you will need to repeat the installation process to upgrade to the new version. Package managers simplify the update process, making it faster and more straightforward.


Installing Python packages and Python itself can sometimes cause issues related to write permissions, especially when using globally installed packages for multiple users. By using “–user” flag or installing Python from source, you can overcome these issues and have more control over the installation process.

Hopefully, this article provided you with a better understanding of the options available to you when installing Python on your computer.

5) Installing Python using Homebrew

Homebrew is a popular package manager for Mac users that

makes installing and managing software, including Python, much easier. Homebrew allows you to install and manage software without needing root privileges, which can cause many problems related to write permission.

In this section, we’ll explain how to install Python using Homebrew and explore its advantages.

How to install Python using Homebrew for Mac users

To install Python using Homebrew, follow these easy steps:

1. Open the terminal on your Mac.

2. Install Homebrew by running the following command:


/usr/bin/ruby -e “$(curl -fsSL”



Install Python by running the following command:


brew install python


4. Optionally, you can install an additional version of Python using the following command:


brew install python@2


Advantages of installing Python using Homebrew

Using Homebrew to install Python on a Mac offers several advantages:

1. Avoids permission problems: When installing Python using the traditional method that requires root privileges, write permission-related issues may occur.

Using Homebrew avoids these problems by installing packages and Python in a user-specific directory, which doesn’t require root permissions. 2.

Customizability: Homebrew allows you to customize the installation of Python according to your needs. You can install specific versions of Python, set up virtual environments, or install specific packages without worrying about the dependencies of other packages.

Furthermore, it ensures that you can easily upgrade or downgrade Python versions, and that all your installed packages continue to function correctly. 3.

Dependency management: Homebrew handles all the dependencies required for installing Python, and other software, which takes out the guesswork that a traditional method requires. When you use Homebrew to install Python, all dependencies required for the installation, such as libffi, readline, and zlib, are handled automatically to ensure an error-free, stable installation.

4. Multiple versions of Python: If you are working on a project that requires backward compatibility with Python 2, your Mac already has a stable installation of Python 2.7. Additionally, you can also install Python 2 using Homebrew, allowing you to work with both Python 2 and Python 3 as per your requirement.

In addition to the above advantages, Homebrew is a well-maintained software package with a dedicated community of programmers, ensuring that you get timely updates and support with every package.


In summary, you can use Homebrew to install Python and other software packages on your Mac. Homebrew simplifies the installation process for Python and allows for greater customizability without having to worry about write permission or dependencies.

Rest assured that with Homebrew, you have a reliable package management system that ensures that your Python installation and packages work without error. So go ahead and enjoy the benefits of using Homebrew today!

In conclusion, this article provided solutions for common issues encountered while installing Python packages, including Defaulting to User Installation and write-protected system-wide directories.

We also explored how the “–user” flag and Homebrew could be used as alternatives to overcome these problems. Learning how to troubleshoot these problems and exploring alternative installation methods is crucial for any developer or data scientist who uses Python frequently.

By following the steps outlined in this article, you can overcome these issues and install Python and packages with ease. Remembering these solutions and applying them the next time you have installation issues will help you avoid stress and hassle.

Popular Posts