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
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
You want urlparse using python2:
from urlparse import urlparse
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:
yum install centos-release-SCL
yum install python33
scl enable python33
Check this page out for more info on SCLs
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
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)
as
directive, and then re-import it from that package. But no, you need to use tons of code and dependencies for just nicely looking impor - Reishin 2018-04-15 06:47
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
For Python 3, use the following:
import urllib.parse
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/
Manually include urllib.parse: https://docs.python.org/3.3/library/urllib.parse.html#module-urllib.parse
pip install -U websocket
I just use this to fix my problem