Python3.6 ImportError: cannot import name 'main' Linux RHEL6
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
Related videos on Youtube
Moonie Asemani
Updated on November 07, 2020Comments
-
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 about 7 years"Installing python via yum isn't working for me" - how is it failing?
-
Moonie Asemani about 7 yearsNot 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 about 7 yearsThis looks relevant: packaging.python.org/install_requirements_linux
-
Chankey Pathak about 7 yearsRemove it then install again.
yum remove python-pip
thenyum install python-pip
-
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 about 7 yearsI believe you manually installed Python 3.6 correctly. You should then have a
python3
andpip3
commands available from your terminal. What doessys.path
contain afterimport sys
usingpython3
? You should have something like /somepath/python3.6/site-packages in it. Then what doesls -l /somepath/python3.6/site-packages | grep pip
prints out? -
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 about 6 yearsImportError: 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 about 6 yearsCheck my answer, it should work for you.
-
-
Q Caron about 7 yearsPython 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 about 6 yearsNo such file or directory
-
Tobias Holm about 6 yearsWorked for me on Ubuntu, but file was in another path:
sudo nano /usr/bin/pip3
-
t56k almost 6 yearsWorked for me on High Sierra.