Сбит с толку: Django не может импортировать app.views, но может импортировать приложение в WSGI?

У меня странная проблема с Django, запускаю Django с mod_wsgi.

Джанго находит urls.py и говорит:

ViewDoesNotExist: Could not import app.views. Error was: No module named views

Как ни странно, если у меня

import app

в операторах импорта в urls.py я не получаю сообщение об ошибке (пока оно не достигает app.views, как указано выше), но если у меня есть

from app import views

в моих операторах импорта я получаю сообщение об ошибке.

Мой путь к Python, как показано в информации об отладке Django, содержит как содержащую папку, так и папку приложения. Если я запускаю Python из командной строки, я могу просто импортировать app.views. Я могу запустить приложение, используя python manage.py runserver, просто отлично.

Я также пытался распечатать путь python к stderr из urls.py, и в нем есть путь к приложению.

Что может происходить?

Моей первой мыслью было, что в папке приложения может не быть __init__.py, но он есть.

Спасибо!

ОБНОВЛЕНИЕ

В приложении runserver, если я попытаюсь

print app.__file__
>> \path\to\app\__init__.py

Но в версии wsgi я вижу только:

print app.__file__
>> \path\to\app\

Другими словами, он просто не находит __init__.pyc.


person AP257    schedule 25.02.2011    source источник


Ответы (2)


Вероятно круговая зависимость - что-то в views импортирует другой модуль, который сам пытается импортировать views.

person Daniel Roseman    schedule 25.02.2011
comment
Я заменил содержимое views.py на print 'hello', но все равно та же ошибка. Арх! - person AP257; 25.02.2011
comment
Кроме того, я могу нормально запустить приложение Django, используя python manage.py runserver. Проблема существует только с WSGI. - person AP257; 25.02.2011
comment
Если круговой импорт не удается найти, вы можете попробовать сценарий WSGI, описанный в конце 'blog.dscpl.com.au/2010/03/» в качестве обходного пути. - person Graham Dumpleton; 27.02.2011
comment
@ Грэм спасибо - я попробую ваш сценарий. Похоже, это не редкая проблема. - person AP257; 01.03.2011
comment
С тех пор я нашел stackoverflow.com/questions/3749033/, что звучит как то же самое. - person AP257; 01.03.2011

На вашем веб-сервере закончились дескрипторы файлов. Перенастройте приложение WSGI для режима демона.

person Ignacio Vazquez-Abrams    schedule 25.02.2011
comment
спасибо - любые указатели на то, как это сделать? (Сегодня Google не является моим другом) - я пробую WSGIDaemonProcess, как определено здесь code. google.com/p/modwsgi/wiki/IntegrationWithDjango, но безуспешно. - person AP257; 25.02.2011
comment
Кроме того, я получаю сообщение об ошибке даже сразу после перезапуска apache - не закончились ли в этот момент дескрипторы файлов? - person AP257; 25.02.2011
comment
Исчерпание дескрипторов файлов будет другой ошибкой. Как заметил Даниэль, скорее всего, проблема с круговым импортом или порядком импорта. - person Graham Dumpleton; 27.02.2011