no module named urllib.parse (How should I install it?)

PythonDjangoUrllib

Python Problem Overview


I'm trying to run a REST API on CentOS 7, I read urllib.parse is in Python 3 but I'm using Python 2.7.5 so I don't know how to install this module.

I installed all the requirements but still can't run the project.

When I'm looking for a URL I get this (I'm using the browsable interface):

Output:

ImportError at /stamp/
No module named urllib.parse

Python Solutions


Solution 1 - Python

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

Solution 2 - Python

You want urlparse using python2:

from urlparse import urlparse

Solution 3 - Python

With the information you have provided, your best bet will be to use Python 3.x.

Your error suggests that the code may have been written for Python 3 given that it is trying to import urllib.parse. If you've written the software and have control over its source code, you should change the import to:

from urlparse import urlparse

urllib was split into urllib.parse, urllib.request, and urllib.error in Python 3.

I suggest that you take a quick look at software collections in CentOS if you are not able to change the imports for some reason. You can bring in Python 3.3 like this:

  1. yum install centos­-release­-SCL
  2. yum install python33
  3. scl enable python33

Check this page out for more info on SCLs

Solution 4 - Python

python3 supports urllib.parse and python2 supports urlparse

If you want both compatible then the following code can help.

import sys

if ((3, 0) <= sys.version_info <= (3, 9)):
    from urllib.parse import urlparse
elif ((2, 0) <= sys.version_info <= (2, 9)):
    from urlparse import urlparse

Update: Change if condition to support higher versions if (3, 0) <= sys.version_info:.

Solution 5 - Python

Install six, the Python 2 and 3 Compatibility Library:

$ sudo -H pip install six

Use it:

from six.moves.urllib.parse import urlparse

(edit: I deleted the other answer)

Solution 6 - Python

For python 3 pip install urllib

find the utils.py in %PYTHON_HOME%\Lib\site-packages\solrcloudpy\utils.py

change the import urlparse to

from urllib import parse as urlparse

Solution 7 - Python

For Python 3, use the following:

import urllib.parse

Solution 8 - Python

The urlparse in Python 2.7.11 was renamed to urllib.parse in Python 3. So, if you have a code such from urlparse import urlparse, I suggest you change it to from urllib.parse import urlparse Since you are using python 2.7.5, using the below will solve your poblem

from urlparse import urlparse

Instead of from urllib.parse import urlparse

Solution 9 - Python

Solution 10 - Python

The problem was because I had a lower version of Django (1.4.10), so Django Rest Framework need at least Django 1.4.11 or bigger. Thanks for their answers guys!

Here the link for the requirements of Django Rest: http://www.django-rest-framework.org/

Solution 11 - Python

pip install -U websocket 

I just use this to fix my problem

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
QuestionjaviercruzwebView Question on Stackoverflow
Solution 1 - PythonAgnaldo MarinhoView Answer on Stackoverflow
Solution 2 - PythonPadraic CunninghamView Answer on Stackoverflow
Solution 3 - PythonMinn SoeView Answer on Stackoverflow
Solution 4 - PythonRam IdavalapatiView Answer on Stackoverflow
Solution 5 - PythonMartin ThomaView Answer on Stackoverflow
Solution 6 - Pythonuser482963View Answer on Stackoverflow
Solution 7 - PythonKingzView Answer on Stackoverflow
Solution 8 - PythonSrikanth AvadhanulaView Answer on Stackoverflow
Solution 9 - PythonNoelView Answer on Stackoverflow
Solution 10 - PythonjaviercruzwebView Answer on Stackoverflow
Solution 11 - Pythonuser5168920View Answer on Stackoverflow