コードを調べた後、そのインポートを参照するときに何らかのエラーがあるように見えます。 /lib/python3.2/site-packages/django/utils/six.pyファイルを調べたところ、moves.zip_longestモジュールへの参照がどこにあるかがわかりました。
最初はこのリファレンスでした:
moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves")
これは、_MovedItemsクラスを呼び出していたことを意味します。ここでは、壊れていたモジュールへの参照があります。
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
これは_LazyDescrクラスから継承しますが、これは短い小さなオブジェクトです。どこで問題が発生したのかわかりません。MovedAttributeコンストラクターに渡されるタプルをマップすると、古いバージョンが新しいバージョンに正しくマップされます。失敗する理由はわかりませんが、compiler.pyファイルのimportステートメントを削除し、itertools zip_longestを直接呼び出すだけで、すべて機能します。
これがそのように見えるものです。 Python 3を使用している場合は、/lib/python3.2/site-packages/mysql/connector/django/compiler.pyファイルを編集し、6行目を次のように変更します。
from django.utils.six.moves import zip_longest as six_zip_longest
これに:
from itertools import zip_longest