Причудливая ошибка импорта настроек в 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

оказывается, в моем приложении была ошибка импорта. Как только я увидел ошибку, потребовалось десять секунд, чтобы исправить ее. :/