9

some program written in Python 2.7 complains that ImportError: No module named 'urlparse'. So I need to install the module, but I am not able to do it. The module does exist, it is described e.g. at https://docs.python.org/2/library/urlparse.html. However, neither apt-get install, nor pip install are able to find a module named urlparse, python-urlparse, urllib, python-urllib... -- I'm getting messages like Could not find any downloads that satisfy the requirement ... The only exception is the package python-urllib3 which probably contains the needed files but for Python 3 and installation of which did not help.

I've installed pip, not pip3 since I need the module for Python 2 (pip 1.4.1 from /usr/lib/python2.7/dist-packages (python 2.7)). My Ubuntu is Xubuntu 13.10.

Where's the problem, please? Is pip searching for the module in the right places? I don't know what locations it should search in...

  • check out output of pip search urlparse – kenn Aug 15 '14 at 10:07
  • urlparse is part of the standard library, i.e. it is automatically installed together with Python itself. You won't be able to install il through apt, pip or easy_install. – Andrea Corbellini Aug 23 '14 at 14:28
  • Ubuntu 13.10 is out of date. – enedil Aug 24 '14 at 16:10
13

urlparse is part of the standard Python 2 library. It's shipped as part of Python; it isn't packaged separately on PyPI et al. urlparse.urlparse (the function) was renamed in Python 3 to urllib.parse.

So, a few things to look at:

  • Your Python 2 program might be running under Python 3. Check the launch script to see how it picks which version of Python. It should probably start #!/usr/bin/env python2 but also double check (by running env python2) that that loads up Python 2.

  • Something has eaten /usr/lib/python2.7/urlparse.py, in which case reinstall the libpython2.7-stdlib package with:

    sudo apt-get install --reinstall libpython2.7-stdlib
    
  • Or you have a local file causing mischief...

11

If you need to write code which is Python2 and Python3 compatible you can use the following import

try:
    from urllib.parse import urlparse
except ImportError:
    from urlparse import urlparse
2

If you are using python 2 install it using

pip install urlparse2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.