Ошибка Django South: "нет совместимого приложения, соответствующего" myapp ""
Итак, я, наконец, сдался и схватил Юг. Проблема в том, что каждый раз, когда я пытаюсь следовать учебнику и запускаю
"python manage.py schemamigration myapp --initial"
Я получаю сообщение об ошибке
"There is no enabled application matching 'myapp'"
- Вещи, которые я пробовал -
Я проверил мой файл настроек, выполнив команду Import South из оболочки django, и никаких ошибок не было, и я добавил папку manage.py, содержащую папку PYTHONPATH, а также wsgi.py и settings.py.
Я запустил python manage.py и python Варианты C:\path\to\manage.py, даже вошли в мой каталог python и подтвердили, что юг находится в папке сайтов-пакетов. syncdb работает отлично, заканчивая "не синхронизированным (использование миграции)". python manage.py выполняет миграцию, не возвращая ошибки, но в противном случае, похоже, не имеет никакого эффекта. Я попытался запустить указанную команду до и после запуска syncdb, что не влияет на результат.
- Другая потенциально важная информация -
Django 1.5.1, Python 2.7, другие внешние приложения не используются, Windows 7 64 бит, питон добавлен в путь к окну, юг установлен через команду установки python setup.py. Установка завершена успешно. Я не использую virtualenv, и я бы предпочел избежать этого, поскольку это означало бы много рефакторинга этой текущей настройки проекта и потраченного впустую времени. Я планирую перейти к настройке virtualenv в будущем, но не сейчас.
Что происходит? Как это исправить? Чистые поиски не показали никакой хорошей информации вообще, я полностью в недоумении...
Ответы
Ответ 1
миграции существуют для каждого приложения. каждое приложение может иметь или не иметь собственных миграций, но вам нужно создать их для каждого приложения, в котором вы хотите их использовать. (часто все приложения)
./manage.py migrate
- это ярлык, который запускает миграцию для всех приложений
Ответ 2
Эта ошибка может вводить в заблуждение: она не возникает, когда юг пытается импортировать приложение, но когда он пытается получить модуль приложения models
.
- возможно, он не может импортировать приложение (потому что вы не добавили его имя в
INSTALLED_APPS
)
- возможно, он не может импортировать модуль
models
, потому что файл models.py
не существует или потому, что каталог models/
не содержит __init__.py
.
Юг не импортирует сам модуль models
. Вместо этого он оставляет это задание django.db.models.get_app('app_of_interest')
, которое в соответствии с его docstring "Возвращает модуль, содержащий модели для данного app_label". Сообщение об ошибке, поднятое get_app
, по сути, отличается в зависимости от того, не удалось ли импортировать приложение или модель, но оба исключения: ImproperlyConfigured
, а schemamigrations
script не выглядит глубже, чем что.
Поскольку Юг говорит, что он принимает только обновления безопасности (он вступил в конце срока службы с помощью функции переноса Django 1.7), я не отправляю исправление на его кодовую базу, но вместо этого документирую проблему здесь.
Ответ 3
Проверьте, включено ли имя приложения в INSTALLED_APPS в settings.py