}

pip: module has no attribute main Error

The problem

If you were using main from pip after upgrading to pip 10 you will start to see errors like:

AttributeError: 'module' object has no attribute 'main'

You can also see the error:

from pip import main

ImportError: cannot import name main

This mean that you have installed pip 10 and the code you are executing is not compatible with pip 10.

Solution 1: use _internal module

The main function can be imported from module _internal like:

from pip._internal import main as _main

However note that the module name starts with underscore. Importing from a module that starts with underscore means it's private and you should not do this. If you want to know about these changes on pip, check Announcement: Pip 10 is coming, and will move all internal APIs

Solution 2: Downgrade pip

Actually this is not recommended, you can downgrade pip with:

pip install pip==9.0.1 

We suggest to use this solution only when you are using a library that needs to be updated.

Real Solution

The code of your application should not use unsupported internal APIs. You should change your code ot fix this issue.

Leonardo Lazzaro

Software engineer and technical writer. 10+ years experience in DevOps, Python, and Linux systems.

More articles by Leonardo Lazzaro