Error after upgrading pip: cannot import name 'main'

Whenever I am trying to install any package using pip, I am getting this import error:

    guru@guru-notebook:~$ pip3 install numpy
    Traceback (most recent call last):
      File "/usr/bin/pip3", line 9, in <module>
        from pip import main
    ImportError: cannot import name 'main'
    guru@guru-notebook:~$ cat `which pip3`

    import sys

    # Run the main entry point, similarly to how setuptools does it, but because
    # we didn't install the actual entry point from, don't use the
    # pkg_resources API.
    from pip import main
    if __name__ == '__main__':

It was working fine earlier, I am not sure why it is throwing this error. I have searched about this error, but can't find anything to fix it.

Please let me know if you need any further detail, I will update my question.

You must have inadvertently upgraded your system pip (probably through something like sudo pip install pip --upgrade)

pip 10.x adjusts where its internals are situated. The pip3 command you're seeing is one provided by your package maintainer (presumably debian based here?) and is not a file managed by pip.

You can read more about this on pip's issue tracker

You'll probably want to not upgrade your system pip and instead use a virtualenv.

To recover the pip3 binary you'll need to sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

If you want to continue in "unsupported territory" (upgrading a system package outside of the system package manager), you can probably get away with python3 -m pip ... instead of pip3.


Back to homepage or read more recommendations: