55

When trying to install a package for Python 3 (in Ubuntu), using pip3 install packageName (or sudo pip3 install packageName), I get the following error message:

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

I have been reading for days and have tried the following WITHOUT any success:

  1. Un-installing and re-installing pip3 using the following code: sudo apt-get remove python3-pip followed by sudo apt-get install python3-pip. This was suggested in several posts that say that sometimes pip3 doesn't install properly for Ubuntu. However, it didn't work.
  2. Other post suggested it was an ssl package problem and that if the ssl package doesn't load on Python3, that's the issue. However the following command does not raise any error: python3 -c "import ssl".
  3. Some other post suggested the problem was with the requests package. I then tried sudo apt-get remove python3-requests followed by sudo apt-get install python3-requests also to no avail.

Other information you may need:

  • pip3 --version gives me the same error reported above.
  • dpkg -L python3-pip gives me the following information:

    /.
    /usr
    /usr/lib
    /usr/lib/python3
    /usr/lib/python3/dist-packages
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/PKG-INFO
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/dependency_links.txt
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/not-zip-safe
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/requires.txt
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/entry_points.txt
    /usr/lib/python3/dist-packages/pip-8.1.1.egg-info/top_level.txt
    /usr/lib/python3/dist-packages/pip
    /usr/lib/python3/dist-packages/pip/baseparser.py
    /usr/lib/python3/dist-packages/pip/__main__.py
    /usr/lib/python3/dist-packages/pip/req
    /usr/lib/python3/dist-packages/pip/req/req_set.py
    /usr/lib/python3/dist-packages/pip/req/req_install.py
    /usr/lib/python3/dist-packages/pip/req/__init__.py
    /usr/lib/python3/dist-packages/pip/req/req_file.py
    /usr/lib/python3/dist-packages/pip/req/req_uninstall.py
    /usr/lib/python3/dist-packages/pip/index.py
    /usr/lib/python3/dist-packages/pip/status_codes.py
    /usr/lib/python3/dist-packages/pip/utils
    /usr/lib/python3/dist-packages/pip/utils/setuptools_build.py
    /usr/lib/python3/dist-packages/pip/utils/appdirs.py
    /usr/lib/python3/dist-packages/pip/utils/outdated.py
    /usr/lib/python3/dist-packages/pip/utils/ui.py
    /usr/lib/python3/dist-packages/pip/utils/logging.py
    /usr/lib/python3/dist-packages/pip/utils/encoding.py
    /usr/lib/python3/dist-packages/pip/utils/deprecation.py
    /usr/lib/python3/dist-packages/pip/utils/__init__.py
    /usr/lib/python3/dist-packages/pip/utils/filesystem.py
    /usr/lib/python3/dist-packages/pip/utils/hashes.py
    /usr/lib/python3/dist-packages/pip/utils/build.py
    /usr/lib/python3/dist-packages/pip/compat
    /usr/lib/python3/dist-packages/pip/compat/dictconfig.py
    /usr/lib/python3/dist-packages/pip/compat/__init__.py
    /usr/lib/python3/dist-packages/pip/compat/ordereddict.py
    /usr/lib/python3/dist-packages/pip/models
    /usr/lib/python3/dist-packages/pip/models/index.py
    /usr/lib/python3/dist-packages/pip/models/__init__.py
    /usr/lib/python3/dist-packages/pip/vcs
    /usr/lib/python3/dist-packages/pip/vcs/bazaar.py
    /usr/lib/python3/dist-packages/pip/vcs/subversion.py
    /usr/lib/python3/dist-packages/pip/vcs/mercurial.py
    /usr/lib/python3/dist-packages/pip/vcs/__init__.py
    /usr/lib/python3/dist-packages/pip/vcs/git.py
    /usr/lib/python3/dist-packages/pip/cmdoptions.py
    /usr/lib/python3/dist-packages/pip/basecommand.py
    /usr/lib/python3/dist-packages/pip/commands
    /usr/lib/python3/dist-packages/pip/commands/completion.py
    /usr/lib/python3/dist-packages/pip/commands/install.py
    /usr/lib/python3/dist-packages/pip/commands/hash.py
    /usr/lib/python3/dist-packages/pip/commands/uninstall.py
    /usr/lib/python3/dist-packages/pip/commands/__init__.py
    /usr/lib/python3/dist-packages/pip/commands/list.py
    /usr/lib/python3/dist-packages/pip/commands/search.py
    /usr/lib/python3/dist-packages/pip/commands/show.py
    /usr/lib/python3/dist-packages/pip/commands/download.py
    /usr/lib/python3/dist-packages/pip/commands/wheel.py
    /usr/lib/python3/dist-packages/pip/commands/freeze.py
    /usr/lib/python3/dist-packages/pip/commands/help.py
    /usr/lib/python3/dist-packages/pip/_vendor
    /usr/lib/python3/dist-packages/pip/_vendor/__init__.py
    /usr/lib/python3/dist-packages/pip/operations
    /usr/lib/python3/dist-packages/pip/operations/__init__.py
    /usr/lib/python3/dist-packages/pip/operations/freeze.py
    /usr/lib/python3/dist-packages/pip/__init__.py
    /usr/lib/python3/dist-packages/pip/locations.py
    /usr/lib/python3/dist-packages/pip/pep425tags.py
    /usr/lib/python3/dist-packages/pip/exceptions.py
    /usr/lib/python3/dist-packages/pip/download.py
    /usr/lib/python3/dist-packages/pip/wheel.py
    /usr/share
    /usr/share/man
    /usr/share/man/man1
    /usr/share/man/man1/pip3.1.gz
    /usr/share/doc
    /usr/share/doc/python3-pip
    /usr/share/doc/python3-pip/copyright
    /usr/bin
    /usr/bin/pip3
    /usr/share/doc/python3-pip/changelog.Debian.gz
    

How can I make pip3 work?

NOTE: pip for Python2 works just fine.

================================================

EDIT:

  1. When trying to import setuptools in Python3 I get the following error:
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 11, in <module>
        from setuptools.extern.six.moves import filterfalse, map
      File "/usr/lib/python3/dist-packages/setuptools/extern/__init__.py", line 1, in <module>
        from pkg_resources.extern import VendorImporter
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
        @_call_aside
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
        f(*args, **kwargs)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2952, in _initialize_master_working_set
        add_activation_listener(lambda dist: dist.activate())
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 956, in subscribe
        callback(dist)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2952, in <lambda>
        add_activation_listener(lambda dist: dist.activate())
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2515, in activate
        declare_namespace(pkg)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2097, in declare_namespace
        _handle_ns(packageName, path_item)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2047, in _handle_ns
        _rebuild_mod_path(path, packageName, module)
      File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2066, in _rebuild_mod_path
        orig_path.sort(key=position_in_sys_path)
    AttributeError: '_NamespacePath' object has no attribute 'sort'
  1. When running the following command sed -n '31,37p' < /usr/lib/python3/dist-packages/pip/_vendor/__init__.py in the terminal, I get the following:

    try:
        __import__(vendored_name, globals(), locals(), level=0)
    except ImportError:
        try:
            __import__(modulename, globals(), locals(), level=0)
        except ImportError:
    

===========================================

EDIT2:

My python3 --version is Python 3.5.2.

List of installed packages obtained running the code ls /usr/lib/python3/dist-packages.

apport
apport_python_hook.py
apt
aptdaemon
apt_inst.cpython-35m-x86_64-linux-gnu.so
apt_pkg.cpython-35m-x86_64-linux-gnu.so
aptsources
AptUrl
apturl-0.5.2.egg-info
beautifulsoup4-4.4.1.egg-info
blinker
blinker-1.3.egg-info
Brlapi-0.6.4.egg-info
brlapi.cpython-35m-x86_64-linux-gnu.so
bs4
cairo
_cffi_backend.cpython-35m-x86_64-linux-gnu.so
chardet
chardet-2.3.0.egg-info
checkbox_support
checkbox_support-0.22.egg-info
CommandNotFound
command_not_found-0.3.egg-info
cryptography
cryptography-1.2.3.egg-info
cups.cpython-35m-x86_64-linux-gnu.so
cupsext.cpython-35m-x86_64-linux-gnu.so
curl
cycler-0.9.0.egg-info
cycler.py
dateutil
dbus
_dbus_bindings.cpython-35m-x86_64-linux-gnu.so
_dbus_glib_bindings.cpython-35m-x86_64-linux-gnu.so
deb822.py
debconf.py
debian
debian_bundle
decorator-4.0.6.egg-info
decorator.py
defer
defer-1.0.6.egg-info
DistUpgrade
easy_install.py
feedparser-5.1.3.egg-info
feedparser.py
feedparser_sgmllib3.py
gi
guacamole
guacamole-0.9.2.egg-info
hpmudext.cpython-35m-x86_64-linux-gnu.so
html5lib
html5lib-0.999.egg-info
httplib2
httplib2-0.9.1.egg-info
idna
idna-2.0.egg-info
janitor
jinja2
Jinja2-2.8.egg-info
jwt
LanguageSelector
language_selector-0.1.egg-info
language_support_pkgs.py
louis
louis-2.6.4.egg-info
lsb_release.py
lxml
lxml-3.5.0.egg-info
mako
Mako-1.0.3.egg-info
markupsafe
MarkupSafe-0.23.egg-info
matplotlib
matplotlib-1.5.1.egg-info
matplotlib-1.5.1-nspkg.pth
mpl_toolkits
networkx
networkx-1.11.egg-info
numexpr
numexpr-2.4.3.egg-info
numpy
numpy-1.11.0.egg-info
NvidiaDetector
oauthlib
oauthlib-1.0.3.egg-info
Onboard
onboard-1.2.0.egg-info
orca
padme
padme-1.1.1.egg-info
pandas
pandas-0.17.1.egg-info
pcardext.cpython-35m-x86_64-linux-gnu.so
pexpect
pexpect-4.0.1.egg-info
PIL
Pillow-3.1.2.egg-info
pip
pip-8.1.1.egg-info
pkg_resources
plotly
plotly-1.9.5.egg-info
problem_report.py
ptyprocess
ptyprocess-0.5.egg-info
pyasn1
pyasn1-0.1.9.egg-info
pyatspi
__pycache__
pycups-1.9.73.egg-info
pycurl-7.43.0.egg-info
pycurl.cpython-35m-x86_64-linux-gnu.so
pygobject-3.20.0.egg-info
pygtkcompat
PyJWT-1.3.0.egg-info
pylab.py
pyparsing-2.0.3.egg-info
pyparsing.py
python_apt-1.1.0.b1_ubuntu0.16.04.1.egg-info
python_dateutil-2.4.2.egg-info
python_debian-0.1.27.egg-info
python_systemd-231.egg-info
pytz
pytz-2014.10.egg-info
pyxdg-0.25.egg-info
PyYAML-3.11.egg-info
Quirks
reportlab
reportlab-3.3.0.egg-info
requests
requests-2.9.1.egg-info
scanext.cpython-35m-x86_64-linux-gnu.so
scipy
scipy-0.17.0.egg-info
sessioninstaller
sessioninstaller-0.0.0.egg-info
setuptools
setuptools-20.7.0.egg-info
six-1.10.0.egg-info
six.py
softwareproperties
speechd
speechd_config
systemd
system_service-0.3.egg-info
tables
tables-3.2.2.egg-info
UbuntuDrivers
ubuntu_drivers_common-0.0.0.egg-info
UbuntuSystemService
ufw
ufw-0.35.egg-info
unattended_upgrades-0.1.egg-info
unity_scope_calculator-0.1.egg-info
unity_scope_chromiumbookmarks-0.1.egg-info
unity_scope_colourlovers-0.1.egg-info
unity_scope_devhelp-0.1.egg-info
unity_scope_firefoxbookmarks-0.1.egg-info
unity_scope_gdrive-0.7.egg-info
unity_scope_manpages-0.1.egg-info
unity_scope_openclipart-0.1.egg-info
unity_scope_texdoc-0.1.egg-info
unity_scope_tomboy-0.1.egg-info
unity_scope_virtualbox-0.1.egg-info
unity_scope_yelp-0.1.egg-info
unity_scope_zotero-0.1.egg-info
unohelper.py
uno.py
UpdateManager
urllib3
urllib3-1.13.1.egg-info
usbcreator
usb_creator-0.3.0.egg-info
wheel
wheel-0.29.0.egg-info
xdg
xdiagnose
xdiagnose-3.8.4.1.egg-info
xkit
xkit-0.0.0.egg-info
xlsxwriter
XlsxWriter-0.7.3.egg-info
yaml
_yaml.cpython-35m-x86_64-linux-gnu.so
YamiOmar88
  • 1,336
  • 1
  • 8
  • 20
  • do you have `python3-setuptools` installed? Also, can you please post the output of `sed -n '31,37p' < /usr/lib/python3/dist-packages/pip/_vendor/__init__.py`? – hoefling Mar 25 '18 at 23:42
  • There is clearly a problem with `python3-setuptools`. Please see "EDIT" to my question. When I run the second command you requested I get: ` try: __import__(vendored_name, globals(), locals(), level=0) except ImportError: try: __import__(modulename, globals(), locals(), level=0) except ImportError:` – YamiOmar88 Mar 26 '18 at 07:51
  • 1
    Ok, at least we now know there's nothing wrong with `pip` itself. The `_NamespacePath object has no attribute 'sort'` is a known error that plagued me too for a couple of versions. Can you please check what `setuptools` version do you have? Since you can't import `setuptools`, your only option will be to extract the info from file system: `ls /usr/lib/python3/dist-packages | grep setuptools-`. – hoefling Mar 26 '18 at 12:17
  • The response I get is the following `setuptools` and then a second line that says `setuptools-20.7.0.egg-info` – YamiOmar88 Mar 26 '18 at 16:39
  • 1
    Ok, my wild guess is that you are using Python 3.5 and have one or more package installed that uses namespaces - at least this was the setup I had to deal with. Please check your `python3` version: `python3 --version`. As for finding the namespace packages, can you please post the list of packages you have? `ls /usr/lib/python3/dist-packages`, I guess. – hoefling Mar 26 '18 at 17:28
  • Yes, I have `Python 3.5.2`. The list of packages I have installed are added as EDIT2 in my main question. – YamiOmar88 Mar 26 '18 at 18:48
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/167582/discussion-between-hoefling-and-yamila-omar). – hoefling Mar 26 '18 at 19:23
  • 2
    @YamilaOmar: is your problem already solved now? If yes, then, please write steps of your solution as an answer or, update in your question. Thanks. – Sanchit Nov 06 '18 at 10:33

9 Answers9

91

This solved it for me:

curl -sS https://bootstrap.pypa.io/get-pip.py | python3

try use virtualenv for every specific project not messing with ubuntu subsystem.

Esteis
  • 4,669
  • 2
  • 29
  • 45
s_s.411
  • 1,021
  • 8
  • 9
38

I got this error on WSL Ubuntu and the most upvoted solution didn't work for me.

The one that works:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py --force-reinstall
vvvvv
  • 25,404
  • 19
  • 49
  • 81
Gabriel Soares
  • 396
  • 4
  • 5
14

Thanks @s_s.411

I solve this problem with the following commands:

curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3
type pip3
hash -r
pip3
sam
  • 2,049
  • 3
  • 20
  • 27
6

I ran into the same problem, on Ubuntu 16.04, using the system python 3.5.2 like you, with pip installed via apt (sudo apt install python3-pip) like you, having installed some packages in my home directory with pip3 install --user like you (documented in your chat with hoefling).

The solution was as follows:

  1. Temporarily move away all packages installed with pip3 install --user:
mv ~/.local/lib/python3.5/site-packages{,_backup}

This made pip3 work again, but of course I wanted to keep the packages. (Note: just moving out setuptools was not enough; I am not sure which constellation of packages caused this.)

  1. Install an upgraded pip into home directory:
pip3 install --upgrade --user pip

Now the pip3 command fails (ImportError: cannot import name 'main') because it's still called from the old /usr/bin/pip3 location in the current shell, as indicated by type pip3. To solve this, run:

hash -r

Alternatively, you can always fall back to typing python3 -m pip instead of pip3.

  1. Restore the packages:
mv ~/.local/lib/python3.5/site-packages{_backup/*,}
rmdir ~/.local/lib/python3.5/site-packages_backup
  1. Now pip was working, but python3 -m 'import setuptools' failed with the same exception you saw, AttributeError: '_NamespacePath' object has no attribute 'sort'. This could be solved by uninstalling, then reinstalling the setuptools package in my home directory (uninstalling alone was not enough):
pip3 uninstall setuptools
pip3 install --user --upgrade setuptools

Finally, pip3 and the python3 -c 'import setuptools' are fine.

f0k
  • 71
  • 1
  • 3
5

No module named 'pip._vendor.packaging'

The solution for me was to uninstall the system pipenv (installed with the package manager, pacman), and install pipenv from pip (which is managed with pyenv):

pip install pipenv

I no longer have issues when running pipenv install.

smac89
  • 39,374
  • 15
  • 132
  • 179
2

I tried all fixes on this page and it didn't work, finally I found out my virtualenv was broken and I had to reinstall the virtualenv like so

deactivate - deactivate first to be safe
virtualenv --python=/usr/bin/python3.8 /path/to/my_virtualenv_python3
source /path/to/my_virtualenv_python3/bin/activate - activate the env egain

Of course replace /path/to/my_virtualenv_python with your own path and python3.8 with a custom version of python if you don't use version 3.8 :)

Also please note this may or may not remove already installed packages, so just reinstall every requirements.txt you need afterwards.

jave.web
  • 13,880
  • 12
  • 91
  • 125
1

I also have same problem and I solved it by this command.

pip uninstall pkg-resources==0.0.0
Razia Khan
  • 493
  • 7
  • 14
1

I use an old virtualenv version, it is OK. The old version is 15.1.0.

1

I had a similar issue with Debian 11, my Debian has been updated to major releases several times and it looks like some files were not removed. I had to clean them:

# remove pip
sudo apt purge python3-pip

# check that the files don't belong to any package
dpkg -S /usr/share/python-wheels/* /usr/share/python-support/private/*

# remove the files
sudo rm -rfv /usr/share/python-wheels/ /usr/share/python-support/private/

# remove old files since Python is now 3.9
rm -rfv ~/.local/lib/python3.7/

# reinstall pip
sudo apt install python3-pip

And pip worked again.

A.L
  • 10,259
  • 10
  • 67
  • 98