Skip to content

Fixing Pip for Python 3.10 on Ubuntu

When installing Python 3.10 on Ubuntu, you might encounter pip errors such as:

ImportError: cannot import name 'html5lib' from 'pip._vendor'

This typically occurs because the system's pip version is incompatible with Python 3.10 or pip isn't properly installed for the new Python version.

Primary Solution: Install Pip Using get-pip.py

The most reliable method is to install pip using the official bootstrap script:

bash
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10

After installation, verify it works:

bash
python3.10 -m pip --version

If you encounter permission issues, you may need to use sudo:

bash
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.10

Alternative Installation Methods

Install python3.10-distutils

Sometimes the issue is missing distutils for Python 3.10:

bash
sudo apt install python3.10-distutils

Use ensurepip

Python's built-in ensurepip module can help:

bash
python3.10 -m ensurepip
python3.10 -m pip install -U pip

Add DeadSnakes Repository

For a more complete Python 3.10 installation:

bash
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-distutils

Using Virtual Environments

To avoid system-wide conflicts, use virtual environments:

bash
python3.10 -m venv myenv
source myenv/bin/activate
pip install <package-name>

Create a Pip Alias

For easier access to Python 3.10's pip, add an alias to your .bashrc:

bash
echo "alias pip310='python3.10 -m pip'" >> ~/.bashrc
source ~/.bashrc

Then use it like:

bash
pip310 install <package-name>

Troubleshooting Common Issues

PATH Conflicts

If you have multiple Python installations (like Conda), check your PATH variable. Conda installations might interfere with system Python paths.

Permission Issues

Avoid using sudo with pip when possible. Instead, use the --user flag or virtual environments to prevent system package conflicts.

If you've tried all solutions and still have issues, consider checking for broken symlinks or conflicting pip installations in /usr/bin/.

Verification

After fixing pip, test that it works correctly:

bash
python3.10 -m pip install --upgrade pip
python3.10 -c "import pip; print(pip.__version__)"

This should display the current pip version without any import errors.