Python3.6 ImportError: cannot import name 'main' Linux RHEL6

34,163

Solution 1

You need to edit the pip3 file like so (your path could be different):

nano /Library/Frameworks/Python.framework/Versions/3.6/bin/pip3

And change the import main line so it says:

from pip._internal import main

After this change, my pip3 started to work and I am on macOS. If you are using Linux, your path could be something like /usr/bin/pip3

I found this tip and more information from this thread: https://github.com/pypa/pip/issues/5240

Solution 2

My OS is Linux Mint 18

sudo nano /usr/bin/pip3

Change

from pip import main

To

from pip._internal import main

Solution 3

Don't invoke pip/pip3 directly, which are shortcuts at different locations for different user and they are not well maintained when you upgrade pip (check 'which pip' and 'sudo which pip').

 $ sudo python -m pip install xxx  #for python2 
 $ sudo python3 -m pip install xxx  #for python3

These commands do not take shortcuts and directly invoke pip module, which is maintained very well (also works on Windows)

Solution 4

sudo chmod -R a+rx /usr/local/lib/python3.6/site-packages

You can see the problem right there in your ls -l /usr/local/lib/python3.6/site-packages output that your pip directory is only readable by the owner, which is root.

Solution 5

Do a cd /usr/bin

Then sudo nano pip so as to edit the pip file

Change from pip import main to from pip._internal import main

This will resolve the issue

Share:
34,163

Related videos on Youtube

Moonie Asemani
Author by

Moonie Asemani

Updated on November 07, 2020

Comments

  • Moonie Asemani
    Moonie Asemani over 3 years

    My ultimate goal is to download and install awscli http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html

    Seems python and pip are required in order to accomplish my goal.

    Installing python via yum isn't working for me, so I downloaded and installed python3 manually as follows:

    wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
    tar xf Python-3.6.1.tar.xz
    cd Python-3.6.1.tar.xz
    ./configure
    make
    sudo make altinstall
    

    When I do

    pip3.6 --version

    I get this:

    Traceback (most recent call last):
      File "/usr/local/bin/pip3.6", line 7, in <module>
        from pip import main
    ImportError: cannot import name 'main'
    

    Environment: RHEL 6.6 Accessed via ssh

    What is going on? How to install pip and python3.6 correctly on my linux box?

    Edit:

    When trying to install via yum it fails so I am trying to avoid using yum:

    [asemani@rcdc9pfda5r Python-3.6.1]$ sudo yum -y install python-pip

    [sudo] password for asemeani: 
    Loaded plugins: security
    Setting up Install Process
    No package python-pip available.
    Error: Nothing to do
    

    Another Edit:

    After importing sys and then called sys.path this is what I get:

    [asemani@rcdc9pfda5r Python-3.6.1]$ python3.6
    Python 3.6.1 (default, Apr 28 2017, 11:03:27) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> sys.path
    ['', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages']
    >>> quit()
    [asemani@rcdc9pfda5r Python-3.6.1]$ ls -l /usr/local/lib/python3.6/site-packages
    total 32
    -rw-------  1 root root  126 Apr 27 23:45 easy_install.py
    drwx------ 11 root root 4096 Apr 27 23:45 pip
    drwx------  2 root root 4096 Apr 27 23:45 pip-9.0.1.dist-info
    drwx------  5 root root 4096 Apr 27 23:45 pkg_resources
    drwx------  2 root root 4096 Apr 27 23:45 __pycache__
    -rw-r--r--  1 root root  119 Apr 27 23:45 README.txt
    drwx------  5 root root 4096 Apr 27 23:45 setuptools
    drwx------  2 root root 4096 Apr 27 23:45 setuptools-28.8.0.dist-info
    
    • melpomene
      melpomene about 7 years
      "Installing python via yum isn't working for me" - how is it failing?
    • Moonie Asemani
      Moonie Asemani about 7 years
      Not quit sure but it doesn't seem to find the python or pip package when yumming. I will update my question to include detail
    • melpomene
      melpomene about 7 years
    • Chankey Pathak
      Chankey Pathak about 7 years
      Remove it then install again. yum remove python-pip then yum install python-pip
    • Moonie Asemani
      Moonie Asemani about 7 years
      @melpomene I was looking at the document earlier today. As mentioned yum doesn't seem to be working
    • Q Caron
      Q Caron about 7 years
      I believe you manually installed Python 3.6 correctly. You should then have a python3 and pip3 commands available from your terminal. What does sys.path contain after import sys using python3? You should have something like /somepath/python3.6/site-packages in it. Then what does ls -l /somepath/python3.6/site-packages | grep pip prints out?
    • Moonie Asemani
      Moonie Asemani about 7 years
      @QCaron I've edited my question to answer your questions. However I'm still unclear what my problem is?
    • saurabh rathor
      saurabh rathor about 6 years
      ImportError: cannot import name 'main' Faced the same issue once I upgraded it to Python version 10. Got solution in -- github.com/pypa/pip/issues/5240 Simply restarting the terminal worked for me.
    • Mulperi
      Mulperi about 6 years
      Check my answer, it should work for you.
  • Q Caron
    Q Caron about 7 years
    Python 2.x is still the default Python version for many Linux / Unix based operating systems. Be careful with "choosing the default python to be used".
  • Dmitry Grinko
    Dmitry Grinko about 6 years
    No such file or directory
  • Tobias Holm
    Tobias Holm about 6 years
    Worked for me on Ubuntu, but file was in another path: sudo nano /usr/bin/pip3
  • t56k
    t56k almost 6 years
    Worked for me on High Sierra.