我刚刚安装了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'

I've fixed it by replacing two occurrences of iteritems() by items().
My questions are:

  • 如果South 1.0与Python3兼容,为什么会发生这种情况?
  • 我的修理会给我带来麻烦吗?

我很惊讶,我找不到任何人有同样的问题.

推荐答案

Update:南1.0.1于2014年10月27日发布,其中includes the fix for this issue:

南1.0.1

这是South的一个小错误修复版本,有两个变化:

  • Python3的兼容性已经修复(在1.0中,由于意外引入了iteritems()而被 destruct )
  • 如果South检测到Django 1.7或更高版本,它将显式出错,而不是以神秘错误失败.

My original answer follows below


Django South似乎并不真正支持Python 3,至少该项目在发布之前没有验证支持.见this issue in the South tracker:

Python3支持有什么进展吗?目前情况如何?

在0.8.3版本之前,我看到了一个与python3相关的提交,不知道它是否完整.


这应该算是可行的,但是如果你想要持续的Python 3支持,那么最好使用django 1.7的迁移,这是South的后续版本,有一个完整的Python 3测试套件.

很明显,"sorta"不是真的;维护人员已将重点转移到Django 1.7的新迁移基础设施上.

0.8.4 was兼容,但this commit再次 destruct 兼容;你的改变应该足以解决这个问题.有一个pull request解决了这个问题,但它还没有被合并.

由于1.0是昨天才发布的,所以你还没有找到其他有这个问题的人,因为还没有多少人遇到它.

Django 1.7的迁移支持是将South集成到主线中,并且它完全支持Python 3(自动测试是为完整的Django树捕获回归运行的).第一个候选版本已经发布(有关如何安装的说明,请参阅https://www.djangoproject.com/download/).

Python-3.x相关问答推荐

Pandas groupby基于索引的连续列值相等

这是重命名极地df列的最好方式吗?

Python-Django 设置 Pandas DataFrame 的多索引不会分组/合并最后一个索引

继承自 Counter 与 dict 的类实例的 Deepcopy

替换 .txt 文件中的项目列表

如何创建与导航抽屉一起使用的导航栏

从一列字符串中提取子字符串并将它们放入列表中

如何在 histplot 中标记核密度估计

如何将搜索结果中的所有值保存在另一个列表中?

为什么 numpy 的 `np.char.encode` 会将一个空的 unicode 数组变成一个空的 `float64` 数组?

考虑到Pandas 系列中的不同索引,如何正确估计两列的百分比变化? Python相关

判断 gekko 中的表达式

在 Django 中执行 JSONRenderer.render(serialized_student_data.data) 时遇到问题

如何将虚拟变量列转换为多列?

每个数据行中每个数据帧值的总和

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

RGB 图像中最主要的 colored颜色 - OpenCV / NumPy / Python

如何获得 BeautifulSoup 标签的所有直接子代?

Python的max函数有多高效

0 是 0 == 0(#evaluates 为真?)