Ответ 1
Если вам нужно написать код, совместимый с Python2 и Python3, вы можете использовать следующий импорт
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
Я пытаюсь запустить REST API на CentOS 7, я читаю urllib.parse в Python 3, но я использую Python 2.7.5, поэтому я не знаю, как установить этот модуль.
Я установил все требования, но все еще не могу запустить проект.
Когда я ищу URL-адрес, я получаю это (я использую интерфейс, доступный для просмотра):
Вывод:
ImportError at /stamp/
No module named urllib.parse
Если вам нужно написать код, совместимый с Python2 и Python3, вы можете использовать следующий импорт
try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
Вы хотите использовать urlparse с помощью python2:
from urlparse import urlparse
С предоставленной вами информацией лучше всего использовать Python 3.x.
В вашей ошибке указано, что код может быть написан для Python 3, если он пытается импортировать urllib.parse
. Если вы написали программное обеспечение и имеете контроль над его исходным кодом, следует изменить импорт:
from urlparse import urlparse
urllib
был разбит на urllib.parse
, urllib.request
и urllib.error
в Python 3.
Я предлагаю вам быстро взглянуть на коллекции программного обеспечения в CentOS , если вы по какой-то причине не можете изменить импорт. Вы можете ввести Python 3.3 следующим образом:
yum install centos-release-SCL
yum install python33
scl enable python33
Откроем эту страницу для получения дополнительной информации о SCL
Установите шесть, библиотеку совместимости Python 2 и 3:
$ sudo -H pip install six
Используйте это:
from six.moves.urllib.parse import urlparse
(изменение: я удалил другой ответ)
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
Обновление: измените условие для поддержки более высоких версий if (3, 0) <= sys.version_info:
.
Для python 3 pip install urllib
найдите utils.py
в% PYTHON_HOME%\Lib\site-packages\solrcloudpy\utils.py
измените значение import urlparse
на
from urllib import parse as urlparse
Для Python 3 используйте следующее:
import urllib.parse
Проблема заключалась в том, что у меня была более низкая версия Django (1.4.10), поэтому для Django Rest Framework требуется, по крайней мере, Django 1.4.11 или больше. Спасибо за ответы, ребята!
Здесь ссылка для требований Django Rest: http://www.django-rest-framework.org/
Вручную включить urllib.parse: https://docs.python.org/3.3/library/urllib.parse.html#module-urllib.parse
Urlparse в Python 2.7.11 был переименован в urllib.parse в Python 3. Итак, если у вас есть такой код из urlparse import urlparse, я предлагаю вам заменить его на urllib.parse import urlparse Поскольку вы используете Python 2.7.5, использование приведенного ниже решения вашей проблемы
from urlparse import urlparse
Вместо from urllib.parse import urlparse
pip install -U websocket
Я просто использую это, чтобы исправить мою проблему.