Причудливая ошибка импорта настроек в django
у меня много проектов, работающих в ubuntu с python2.7 и virtualenv / virtualenvwrapper, в моей работе некоторые разработчики работают с macosx и windows, В общем создаю проект как обычно:
django-admin.py start project x
и мы используем svn для cvs, но в какой-то момент, без ничего рационального для меня, когда я пытаюсь что-то вроде:
python manage.py runserver
не работает, но только для меня и в моем ноутбуке, что не происходит на производственных серверах или других разработчиках.
любой идеи?
Я получил эту ошибку:
ошибка: не удается найти файл 'settings.py' в каталоге, содержащем "manage.py". Похоже, вы что-то настроили. Тебе придется бежать. django-admin.py, передавая ему свой модуль настроек. (Если файл settings.py действительно существует, это как-то вызывает ImportError.)
но, очевидно, файл настроек существует и находится в той же папке manage.py файл, и не работает только для мне...
это тоже происходит с Django и appengine
3 ответов
я получил эту ошибку:
ошибка: не удается найти файл 'settings.py-в справочнике, содержащем ...manage.py". Похоже, вы что-то настроили. Вам придется бегать django-admin.py, передавая его модуль настройки. (Если файл settings.py действительно существует, это как-то вызывает ImportError.)
The manage.py
скрипт печатает это предупреждение всякий раз, когда возникает ошибка импорта, поэтому, если ваш settings.py
модуль импортирует материал и это вызывает ошибку импорта, manage.py
по-прежнему будет печатать это предупреждение.
одним из способов диагностики было бы (временно) изменить manage.py
С
#!/usr/bin/env python
from django.core.management import execute_manager
try:
import settings # Assumed to be in the same directory.
except ImportError:
import sys
sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)
if __name__ == "__main__":
execute_manager(settings)
to
#!/usr/bin/env python
from django.core.management import execute_manager
import settings # Assumed to be in the same directory.
if __name__ == "__main__":
execute_manager(settings)
и увидеть трассировку стека, которая печатается при запуске $ python manage.py runserver
.
Если вы получаете эту ошибку при попытке начать работу с django и appengine, следуя руководству по http://www.allbuttonspressed.com/projects/djangoappengine
и вы создали символические ссылки на папки, руководство неправильно при создании символической ссылки djangoappengine. Вам нужно перейти в каталог 1, например
нет:
скопируйте в проект следующие папки (например,, django-testapp):
django-nonrel/django => <project>/django
djangotoolbox/djangotoolbox => <project>/djangotoolbox
django-autoload/autoload => <project>/autoload
django-dbindexer/dbindexer => <project>/dbindexer
djangoappengine => <project>/djangoappengine
исправлено:
скопируйте в проект следующие папки (например, django-testapp):
django-nonrel/django => <project>/django
djangotoolbox/djangotoolbox => <project>/djangotoolbox
django-autoload/autoload => <project>/autoload
django-dbindexer/dbindexer => <project>/dbindexer
djangoappengine/djangoappengine => <project>/djangoappengine
обратите внимание на последнюю строчку.
я охотился весь код django в течение часа, пока не наткнулся на это:
manage.py [command] --traceback
оказывается, в моем приложении была ошибка импорта. Как только я увидел ошибку, потребовалось десять секунд, чтобы исправить ее. :/