pip3 error - '_NamespacePath' object has no attribute 'sort'

PythonPipPython 3.5Attributeerror

Python Problem Overview


I tried to install a package through pip3, and I got this error. Every pip/pip3 command that I run gives me this error-

alexg@hitbox:~$ pip3 -V
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 7, in <module>
    from pip import main
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
    from pip._vendor import pkg_resources
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
    @_call_aside
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
    f(*args, **kwargs)
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
    dist.activate(replace=False)
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
    declare_namespace(pkg)
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
    _handle_ns(packageName, path_item)
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
    _rebuild_mod_path(path, packageName, module)
  File "/home/alexg/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
    orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'

I have tried running pip3 install --upgrade pip setuptools according to some answers, but every pip command gives me the error. I'm stuck and can't do anything.

What could have caused it, and how can this be fixed?

I'm on Ubuntu 16.04 with Python 3.5.2

Python Solutions


Solution 1 - Python

I met the same issue with python 3.5.2 and pip3 (9.0.1). And I fixed it by following this workaround: https://github.com/pypa/setuptools/issues/885#issuecomment-307696027

More specifically, I edited line #2121~2122 of this file: "sudo vim /usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/_init_.py"

#orig_path.sort(key=position_in_sys_path)
#module.__path__[:] = [_normalize_cached(p) for p in orig_path]
orig_path_t = list(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [_normalize_cached(p) for p in orig_path_t]

Solution 2 - Python

Upgrading setuptools worked for me:

pip3 install --upgrade setuptools

Solution 3 - Python

This may sound weird, because I had this issue and I had tried everything mentioned in SO and GitHub issues. But then I installed pip with easyinstall and pip command is working. Maybe now there are 2 pip packages now. But error is gone.

easy_install pip

Solution 4 - Python

I'm using virtualenv and upgrading setuptools didn't work for me. What did work was this workaround:

pip uninstall setuptools -y && pip install setuptools

Solution 5 - Python

Yet another answer, but following is the one which eventually fixed the issue for me. Since pip was compromised I was unable to use it for upgrading itself or setuptools and also using easy_install was bringing up the same issue. So I tried to install pip using Python.

The answer:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py 
pip install --upgrade setuptools

Solution 6 - Python

try -
pip install -U pip
pip install -U setuptools

if editing __init__.py doesnt help.

Solution 7 - Python

I tried most of the above suggested solutions but nothing worked as pip3 was totally non-functional, then I found this: https://deeptalk.lambdalabs.com/t/trying-to-uninstall-tensorflow-or-matplotlib-pip-package-throws-attributeerror--namespacepath-object-has-no-attribute-sort/310

I think this is probably the issue with most of us. I tried the suggested solution and pip3 is working again.

For me the matplotlib was not present in dist-packages but instead it was in site-packages, so the command that worked for me was:

sudo rm ~/.local/lib/python3.5/site-packages/matplotlib-3.0.3-py3.5-nspkg.pth

ofcourse you need to change the above path based on your version and location of matplotlib.

Solution 8 - Python

This probably means that your dependencies got messed up.

Try to uninstall pip3 from scratch and it should work.

In case it doesn't work, delete your pip installation. In your case:

rm -r /home/alexg/.local/lib/python3.5/site-packages/pip/

And to be sure next time, best to work with virtual environments :)

Solution 9 - Python

Try : sudo easy_install pip and then

sudo easy_install setuptools

It probably happends because of messed-up dependencies.

Solution 10 - Python

I had the same problem using poetry.

Running

poetry run pip install --upgrade pip setuptools

instead of

pip install --upgrade pip setuptools

fixed the issue.

Solution 11 - Python

I had this same problem, and was unable to run any command with pip3 (including any commands like pip3 install --upgrade pip setuptools).

Only fix I've found was to completely uninstall and re-install python 3 (sudo apt-get remove python3, sudo apt-get install python3, sudo apt install python3-pip) and now pip3 is working properly again.

Solution 12 - Python

After trying all kinds of methods, such as reinstall pip, setuptools, and still can't fix the problem. I follow the instruction of https://github.com/pypa/pip/issues/4216#issuecomment-286348680 and only with an external warning. After that, I use pip to uninstall matplotlib. Finally, all things seem okay.

Solution 13 - Python

I had this problem consistently (and used the workaround below to use pip in the python3 interpreter). To my surprise, after uninstalling all versions of numpy and reinstalling the latest one, pip began working again. I can't say for sure what happened, but it might be something to try if everything else has failed.

The workaround (pieced together from several sources I don't recall) is

  1. start python3
  2. import pip twice (getting an error the first time)
  3. use pip.main within the interpreter

Here is a transcript:

>>> import pip
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py",
    __import__(vendored_name, globals(), locals(), level=0)
ImportError: No module named 'pip._vendor.pkg_resources'

During handling of the above exception, another exception occurred

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 13,
    from pip.exceptions import InstallationError, CommandError, Pi
  File "/usr/lib/python3/dist-packages/pip/exceptions.py", line 6,
    from pip._vendor.six import iteritems
  File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", l
    vendored("pkg_resources")
  File "/usr/lib/python3/dist-packages/pip/_vendor/__init__.py", l
    __import__(modulename, globals(), locals(), level=0)
                                .
                               etc
                                .
AttributeError: '_NamespacePath' object has no attribute 'sort'
>>> import pip
>>> pkgs = ['asciiplotlib']
>>> pip.main(['install'] + pkgs + ['--upgrade'])
Collecting asciiplotlib
  Using cached https://files.pythonhosted.org/packages/15/c5/46a2d
Installing collected packages: asciiplotlib
Successfully installed asciiplotlib-0.1.8

Solution 14 - Python

I fixed this with follows:

$curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

For python2:

$python get-pip.py

For python3:

$python3 get-pip.py

Now it works for me.

Solution 15 - Python

None of the other posted answered worked for me, but running the follow command solved t:

sudo apt-get purge --auto-remove python3-pkg-resources python3-setuptools

Solution 16 - Python

This is for windows users, who installed WinPython We couldn't even run pip command. Uninstall and install of Anaconda 3 We faced similar error. Finally we removed folder "Python" which is inside C:\Users\you\AppData\Roaming\ and removed folder "conda" & "packages" which is inside C:\Users\you\AppData\Roaming\conda. Then it worked.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionamadispstacView Question on Stackoverflow
Solution 1 - Pythonjkjung13View Answer on Stackoverflow
Solution 2 - PythonThaiView Answer on Stackoverflow
Solution 3 - PythonForeeverView Answer on Stackoverflow
Solution 4 - PythonmtlynchView Answer on Stackoverflow
Solution 5 - PythonDatamanView Answer on Stackoverflow
Solution 6 - PythonmarkroxorView Answer on Stackoverflow
Solution 7 - PythonfrazView Answer on Stackoverflow
Solution 8 - PythonadrpinoView Answer on Stackoverflow
Solution 9 - PythonGLNBView Answer on Stackoverflow
Solution 10 - PythonKazuya GoshoView Answer on Stackoverflow
Solution 11 - PythonAnotherShruggingPhysicistView Answer on Stackoverflow
Solution 12 - PythonfordacreView Answer on Stackoverflow
Solution 13 - PythonMoondoggyView Answer on Stackoverflow
Solution 14 - PythonlxyView Answer on Stackoverflow
Solution 15 - PythonOrnyView Answer on Stackoverflow
Solution 16 - PythonJohn PrawynView Answer on Stackoverflow