Nach dem Studium des Codes sieht es so aus, als ob beim Verweisen auf diesen Import ein Fehler aufgetreten ist. Ich habe in die Datei /lib/python3.2/site-packages/django/utils/six.py geschaut und festgestellt, wo der Verweis auf das Modul move.zip_longest war.
Zuerst war diese Referenz:
moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves")
Das heißt, es hat die Klasse _MovedItems aufgerufen, und hier ist es mit dem Verweis auf mein Modul, das kaputt gegangen ist.
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
Die erbt dann von der Klasse _LazyDescr, aber das ist ein kurzes kleines Objekt. Ich weiß nicht, wo etwas schief gelaufen ist. Wenn Sie das übergebene Tupel dem MovedAttribute-Konstruktor zuordnen, wird die alte Version der neuen korrekt zugeordnet. Ich bin mir nicht sicher, warum es fehlschlägt, aber wenn Sie die import-Anweisung in der Datei compiler.py entfernen und einfach itertools zip_longest direkt aufrufen, funktioniert alles.
So sieht das aus. Wenn Sie Python 3 verwenden, bearbeiten Sie die Datei /lib/python3.2/site-packages/mysql/connector/django/compiler.py und ändern Sie Zeile 6 davon:
from django.utils.six.moves import zip_longest as six_zip_longest
dazu:
from itertools import zip_longest