Django: странная ошибка импорта - PullRequest
2 голосов
/ 28 июня 2011

Я развертываю (проприетарное) приложение Django (с плохой поддержкой ;-)). Единственное, что мне нужно сделать, это настроить новый проект Django и реализовать URL-адреса приложения. Итак, мой URL-адрес выглядит следующим образом:

  1 from django.conf.urls.defaults import patterns, include, url
  2 
  3 urlpatterns = patterns('',
  4     url(r'^', include('ap01.urls')),
  5 )

Данное приложение также добавлено в мою настройку INSTALLED_APPS.

Я могу проверить (./manage.py validate) и все хорошо. При запуске приложения я получаю следующую ошибку импорта:

ImportError at /
No module named ap01.urls

Модуль присутствует в Python Path, сообщенном Django, и при ручном импорте модуля urls все работает, т.е.:

./manage.py shell 
__import__('ap01.urls')

Я сравнил настройки с QA и dev-серверами, и, кажется, все работает правильно. Единственное, что отличается, это версия Python (2.6 на QA и dev; 2.7 на этой новой машине).

1 Ответ

2 голосов
/ 04 июля 2011

Я бы отладил это так:

Вам нужно знать, где вызывается ошибка ImportError. Затем добавьте что-то вроде этого:

import sys
raise Exception(sys.path)
  • Является ли каталог выше "ap01" в sys.path?
  • Содержит ли каталог ap01 файл __init__.py?
  • Какой идентификатор пользователя у вас есть интерпретатор Python (тот, который вызывает исключение импорта)? Попробуйте: import os, sys; assert False, (os.getuid(), sys.path)
  • Может быть, у этого идентификатора пользователя недостаточно прав для чтения файла? Получите этого пользователя с помощью «su» (если вы используете Unix-подобную ОС), а затем попробуйте прочитать:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...