Подтвердить что ты не робот

Почему Django South 1.0 использует iteritems()?

Я только что установил South 1.0, и когда я собирался выполнить первую миграцию, я получил это сообщение об ошибке:

... /lib/python3.4/site-packages/south/migration/migrators.py", line 186, in _run_migration
for name, db in south.db.dbs.iteritems():
AttributeError: 'dict' object has no attribute 'iteritems'

Я исправил его, заменив два экземпляра iteritems() элементами().
Мои вопросы:

  • Если South 1.0 совместим с Python3, почему это происходит?
  • Будет ли мое исправление причинить мне какие-либо проблемы?

Меня поражает тот факт, что я не мог найти никого, испытывающего ту же проблему.

4b9b3361

Ответ 1

Обновление: South 1.0.1 был выпущен 27 октября 2014 года, в котором содержит исправление для этой проблемы

Юг 1.0.1

Это небольшая выпуская юг с двумя изменениями:

  • Совместимость Python 3 была исправлена ​​(она была нарушена в 1.0 случайным введением iteritems())
  • Юг явно будет ошибкой, если он обнаружит Django 1.7 или выше, а не с ошибками.

Ниже мой первоначальный ответ.


Похоже, что Django-South не поддерживает Python 3, по крайней мере, проект не проверяет поддержку перед выпуском. См. эту проблему в южном трекере:

Был ли прогресс в поддержке Python3? Каков текущий статус?

     

Я вижу связанный с python3 коммит до выпуска 0.8.3, задаваясь вопросом, завершено ли оно или нет.


Это должно выглядеть как работа, но если вы хотите поддерживать постоянную поддержку Python 3, вам лучше использовать миграции django 1.7, которые являются южным преемником и имеют полный тестовый набор python 3.

Очевидно, что "сортировка" - это "не совсем"; сопровождающий сместил фокус на новую инфраструктуру миграции Django 1.7.

0.8.4 был совместим, но этот коммит снова совместил совместимость; ваши изменения должны быть достаточными, чтобы исправить эту проблему. Существует запрос на перенос, который адресован именно этому, но он еще не объединен.

Поскольку 1.0 был выпущен только вчера, причина, по которой вы не нашли кого-либо еще с этой проблемой, состоит в том, что в нее еще не вошло много людей.

Поддержка миграции Django 1.7 - это, в основном, интеграция Юга в магистраль и полностью поддерживает Python 3 (автоматические тесты выполняются для всех регрессионных ловушек Django, подобных этим). Первый кандидат на выпуск отсутствует (см. https://www.djangoproject.com/download/ для инструкций по его установке).