我试图在CentOS 7上运行REST API,我读到urllib.parse在Python 3中,但我使用的是Python 2.7.5所以我不知道如何安装它模块。
我安装了所有要求,但仍然无法运行项目。
当我正在寻找网址时,我得到了这个(我使用可浏览界面):
输出:
ImportError at /stamp/
No module named urllib.parse
答案 0 :(得分:67)
如果您需要编写兼容Python2和Python3的代码,可以使用以下导入
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
答案 1 :(得分:20)
你想要使用python2的urlparse:
from urlparse import urlparse
答案 2 :(得分:16)
根据您提供的信息,您最好的选择是使用Python 3.x.
您的错误表明代码可能是为Python 3编写的,因为它试图导入urllib.parse
。如果您已编写软件并控制其源代码,则应将导入更改为:
from urlparse import urlparse
urllib
在Python 3中被分为urllib.parse
,urllib.request
和urllib.error
。
如果由于某种原因无法更改导入,我建议您快速查看CentOS中的软件集合。 你可以像这样引入Python 3.3:
yum install centos-release-SCL
yum install python33
scl enable python33
查看this页面了解有关SCL的更多信息
答案 3 :(得分:7)
安装six,Python 2和3兼容性库:
$ sudo -H pip install six
使用它:
from six.moves.urllib.parse import urlparse
(编辑:我删除了另一个答案)
答案 4 :(得分:7)
python3
支持urllib.parse
和python2
支持urlparse
如果您希望两者兼容,则以下代码可以提供帮助。
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
答案 5 :(得分:3)
对于python 3 pip install urllib
在%PYTHON_HOME%\ Lib \ site-packages \ solrcloudpy \ utils.py
中找到utils.py
将import urlparse
更改为
from urllib import parse as urlparse
答案 6 :(得分:1)
对于Python 3,请使用以下命令:
import urllib.parse
答案 7 :(得分:0)
问题是因为我有一个较低版本的Django(1.4.10),因此Django Rest Framework至少需要Django 1.4.11或更高版本。谢谢他们的答案!
这里是Django Rest要求的链接:http://www.django-rest-framework.org/
答案 8 :(得分:0)
答案 9 :(得分:0)
Python 2.7.11中的urlparse在Python 3中重命名为urllib.parse。 因此,如果您有从urlparse import urlparse这样的代码,我建议您将其更改为从urllib.parse import urlparse 由于您使用的是python 2.7.5,因此使用下面的方法可以解决您的难题
from urlparse import urlparse
代替from urllib.parse import urlparse
答案 10 :(得分:-6)
pip install -U websocket
我只是用它来解决我的问题