Django 1.5到1.6无法导入zip_longest名称

3
我想将我的项目从Django 1.5迁移到1.6版本。我遇到了奇怪的导入错误,说实话我不知道该怎么办: 错误:无法导入zip_longest名称。
...
C:\Python27\lib\site-packages\django-1.6.2-py2.7.egg\django\db\backends\mysql\compiler.py in <module>
from django.db.models.sql import compiler
from django.utils.six.moves import zip_longest 
...

我认为很奇怪,因为错误发生在django导入时,而不是直接在我的代码中。

如果有任何解决方法的提示,我将非常感激。

最好的问候


根据您的堆栈跟踪,显然与“SubdomainURLRoutingMiddleware”有关。如果出于某种原因您不再需要它,请尝试将其删除。也许它只是与Django 1.6不兼容。 - Nil
1
我尝试过将其删除,但没有帮助。正如我们所看到的,这个错误在Django导入中,每当应用程序想要执行与数据库相关的操作时都会出现。 - Arturo
2个回答

2
我通过修改Django 1.6源代码来解决了这个错误...所以我认为这不是一个好的解决方案。
在文件django\db\backends\mysql\compiler.py中,
我替换了下列代码:
from django.utils.six.moves import zip_longest 

使用

from itertools import izip_longest as zip_longest

我测试过,我的应用程序使用这个补丁可以正常工作。

顺便提一下,有一个类似的话题:

导入错误:python-mysql-connector 1.16、django 1.6和python 3.2.3


可以运行但有些乱。 - Zulu

0
我猜你在安装 Django 1.6.2 的时候出了问题,导致它所包含的 Six 模块出现了损坏。
>>> from django import VERSION
>>> print(VERSION)
(1, 6, 2, 'final', 0)

>>> from django.utils.six.moves import zip_longest
>>> 

我在Python shell中输入了这段代码,一切都正常。我将在一个空的Django项目中使用MySQL作为数据库来查看是否出现此错误。谢谢。 - Arturo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接