Откуда сервер django dev (manage.py runserver) получает свой путь?

Недавно я переместил приложение django с c:\Users\user\django-projects\foo\foobar на c:\Python25\Lib\site-packages\foo\foobar (которое находится на пути python). Я запустил новое приложение в каталоге django-projects и добавил foo.foobar в параметр INSTALLED_APPS. Когда я пытаюсь запустить сервер разработки (manage.py runserver) для своего нового приложения, я получаю сообщение об ошибке ImportError: No module named foobar.

Просматривая трассировку, он ищет в c:\Users\user\django-projects\foo\..\foo\foobar приложение foobar. Я проверил свои переменные среды PATH и PYTHONPATH, и ни одна из них не указывает на c:\Users\user\django-projects\foo, и она не отображается в sys.path, когда я запускаю интерпретатор Python.

Я предполагаю, что каким-то образом добавил c:\Users\user\django-projects\foo к пути django во время разработки foo, но я не помню, как я это сделал.

Итак, со всей этой подготовкой, мой вопрос: «Как мне заставить manage.py выглядеть в c:\Python25\Lib\site-packages вместо c:\Users\user\django-projects\foo

Спасибо,

  • Лексо

person Lexo    schedule 05.08.2010    source источник
comment
Вы можете изменить путь, отредактировав sys.path. Однако я предполагаю, что в вашем каталоге site-packages\foo просто отсутствует __init__.py   -  person Wolph    schedule 05.08.2010
comment
Является ли sys.path единственным местом, куда смотрит manage.py? Если да, то почему он все еще ищет в несуществующем каталоге django-projects\foo? Кроме того, у меня есть файл __init__.py в site-packages\foo   -  person Lexo    schedule 05.08.2010


Ответы (2)


manage.py импортирует settings.py из текущего каталога и передает settings в качестве параметра в execute_manager. Вероятно, вы определили корень проекта в settings.py.

person laurent    schedule 05.08.2010
comment
Спасибо. Я проверил свой settings.py, и в нем вообще нет следов django-projects. Я начинаю думать, что схожу с ума. Я проведу еще несколько тестов и посмотрю, что я могу придумать. - person Lexo; 06.08.2010
comment
Вы пытались использовать управляемую оболочку (python manage.py shell), чтобы увидеть, что находится в sys.path. ..../foo должен быть там первым. Просто проверить... как будто его нет, не знаю как исправить! но если это там, я думаю, что ваша проблема не проблема пути. Может разрешения? __init__.py пусто? - person laurent; 06.08.2010
comment
Я исправил проблему (см. ниже), но вы ответили на мой первоначальный вопрос, поэтому я отметил ваш вопрос как правильный. Спасибо за вашу помощь! - person Lexo; 07.08.2010
comment
Рад видеть, что это решено! :) и спасибо за принятие даже с очень косвенной помощью. - person laurent; 08.08.2010

Я исправил это, хотя я не знаю, какое решение сработало. Во-первых, я удалил файлы .pyc из своего проекта, затем я переиндексировал свой поиск Windows (я предполагаю, что это сделало это). Это изменило сообщение об ошибке на правильный каталог. После чего я понял, что у меня

from baz import settings

в моем файле foobar/baz/models.py, который все время вызывал проблему. я изменил это на

import settings

что устранило проблему. Спасибо Лорану за всю вашу помощь :-)

person Lexo    schedule 07.08.2010