2017-01-12 3 views
0

У меня была проблема, которую я только что разместил here. Я видел ответ на аналогичный вопрос, который сказал, что удаление и установка requirements.txt поможет, потому что корень проблемы был плохой цепочкой зависимостей.Django: не может импортировать миграцию имен

Итак, я сделал это, и теперь, конечно, я столкнулся с новой проблемой.

При выполнении миграций, я получаю следующее сообщение об ошибке:

File "C:\Python27\lib\site-packages\genericm2m\migrations\0001_initial.py", line 5, in <module> 
    from django.db import migrations, models 
ImportError: cannot import name migrations 

Согласно другому ответу, это вызвано тем, что я использую модуль миграции, который моя версию Django (1.4) не поддерживаю все же.

Похоже, что модуль django-generic-m2m (версия 0.3.1) использует миграции. Я не понимаю, почему эта проблема сейчас происходит, поскольку я всегда использовал тот же файл requirements.txt, и у меня никогда не было этой проблемы.

Раньше у меня были подобные проблемы с зависимостями, использующими миграции, в то время как мой Django не мог их обработать. Но у этих депов также была папка south_migrations, поэтому просто переименовать ее в migrations и избавиться от фактической папки migrations. Тем не менее, я не вижу никакого каталога south_migrations в установочном каталоге generic2m2.

У кого-нибудь была эта проблема раньше?

+2

Почему вы используете 1.4, который является несколько летним и полностью не поддерживается? –

+0

Потому что это не до меня, чтобы выбрать его. – dabadaba

+0

Если вы не связываете свои требования (например, 'genericm2m == 0.3.0' или' genericm2m <0.3.1'), установка с файлом требований может использовать более новые версии, которые нарушают ваше приложение. – Alasdair

ответ

2

Приложение не имеет южных миграций, и, насколько я могу найти, у них их никогда не было. Вероятно, для создания таблиц базы данных используется «syncdb».

Новый Django не имеет syncdb, поэтому были добавлены миграции для создания таблиц.

Если вы все равно используете переименование каталогов миграций, то вы, возможно, просто удалите каталог migrations /, но вы действительно должны перейти на поддерживаемую версию.

Кроме того, ваше старое исправление переименования south_migrations в migrations не предназначалось для использования: если вы используете Django-South 1.0 (последняя версия django-south ever), он обнаружит, когда присутствует каталог south_migrations и использует он вместо каталога миграции.

Итак, вы также должны обновить Юг до 1.0, а затем , добавив, также может работать пустой каталог south_migrations/(я не знаю).

+0

Да, я удалил папку миграции и сделал это. – dabadaba

Смежные вопросы