ImportError: невозможно импортировать имя URL - PullRequest
0 голосов
/ 23 января 2019

Я обновляю приложение django с версии 1.3 до 1.11.18. Мы работаем с Python v2.7.12 и запускаем сервер nginx для обслуживания страниц.

В результате обновления я вносил изменения в код для учета всех устаревших методов. Все идет нормально. После очередного запуска обновлений я столкнулся с этим сообщением об ошибке после запуска сервера:

File "/home/bat/application.com/wsgi.py", line 12, in <module>
   application = get_wsgi_application()
File "./django/core/wsgi.py", line 14, in get_wsgi_application
   return WSGIHandler()
File "./django/core/handlers/wsgi.py", line 151, in __init__
   self.load_middleware()
File "./django/core/handlers/base.py", line 56, in load_middleware
   mw_class = import_string(middleware_path)
File "./django/utils/module_loading.py", line 20, in import_string
   module = import_module(module_path)
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
   __import__(name)
File "./django/middleware/locale.py", line 4, in <module>
   from django.conf.urls.i18n import is_language_prefix_patterns_used
File "./django/conf/urls/i18n.py", line 2, in <module>
   from django.conf.urls import url
ImportError: cannot import name url

Я не уверен, почему я получаю эту ошибку, поскольку код, на который ссылаются, является основным кодом. Похоже, что он вообще не ссылается ни на какой код проекта, кроме строки открытия.

Я дважды проверил, чтобы убедиться, что у нас нет «оставшегося» кода, который находится в основной папке django: он чистый. Мы также перезагрузили сервер linux только для удовольствия: это тоже не помогло. Кроме того, я не совсем уверен, что еще можно попробовать?

Есть идеи, где я мог бы найти решение этой проблемы?

1 Ответ

0 голосов
/ 23 января 2019

Получается, что файл ./django/conf/urls/__init__.py на самом деле пропускает требуемую функцию def url().Я не уверен, что никто раньше этого не замечал, поскольку основной код явно вызывает, что url функционирует повсюду.

Чтобы решить эту проблему, я скачал Django v1.10.x и скопировал функцию def url(...) из кода v1.10.x в файл django/conf/urls/__init__.py, и все заработало как положено.

Я понимаю, что я изменил основной файл, но я не был уверен, как обойти проблему иначе.Эта ветка 1.x Django не находится в активной разработке, поэтому я думаю, что это, вероятно, нормально.

...