Después de estudiar el código, parece que hay algún tipo de error al hacer referencia a esa importación. Busqué en el archivo /lib/python3.2/site-packages/django/utils/six.py y encontré dónde estaba la referencia al módulo move.zip_longest.
Primero fue esta referencia:
moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves")
Lo que significa que estaba llamando a la clase _MovedItems, y aquí está con la referencia a mi módulo que se estaba rompiendo.
class _MovedItems(_LazyModule):
"""Lazy loading of moved objects"""
_moved_attributes = [
MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest")
class MovedAttribute(_LazyDescr):
def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
super(MovedAttribute, self).__init__(name)
if PY3:
if new_mod is None:
new_mod = name
self.mod = new_mod
if new_attr is None:
if old_attr is None:
new_attr = name
else:
new_attr = old_attr
self.attr = new_attr
Que luego hereda de la clase _LazyDescr, pero ese es un objeto pequeño y corto. No sé dónde salieron mal las cosas, si asigna la tupla que se pasa al constructor MovedAttribute, asigna correctamente la versión anterior a la nueva. No estoy seguro de por qué está fallando, pero si elimina la declaración de importación en el archivo compiler.py y simplemente llama a itertools zip_longest directamente, todo funciona.
Esto es lo que parece. Si está utilizando Python 3, edite el archivo /lib/python3.2/site-packages/mysql/connector/django/compiler.py y cambie la línea 6 de esta:
from django.utils.six.moves import zip_longest as six_zip_longest
a esto:
from itertools import zip_longest