从django.db导入模型,迁移ImportError:无法导入名称迁移

时间:2014-09-03 18:56:32

标签: python django django-south migrate

所以我开始在我的Django Web服务器上遇到一些与南方有关的问题。 每次使用此输出迁移命令失败:

from django.db import models, migrations

ImportError: cannot import name migrations 

(在此之上,错误显示无法迁移的文件的路径)

我的Django版本是1.5.1,而我的南版本是0.8.4

让我最烦恼的是模块django.db.migrations无处可寻。

有什么想法吗?

3 个答案:

答案 0 :(得分:21)

在Django 1.7中引入了迁移;你使用的是1.5。

这是link to the docs explaining this。如果您使用的是旧版本的Django,South是最常用的数据迁移选项。


修改

因此Django Rest Framework导致错误。从他们的文件:

  

rest_framework.authtoken应用程序包括Django本机   迁移(对于Django版本> 1.7)和南迁移(对于Django   版本< 1.7)将创建authtoken表。

     

注意:从REST Framework v2.4.0使用South和Django< 1.7需要   升级South v1.0 +

您必须upgrade South超出您的0.8.4版本到1.0 +。

答案 1 :(得分:1)

我认为OP没有将迁移导入他正在编写的脚本中,其中一个由schemamigration创建的自动脚本可能导致了这个问题。

这个错误突然开始出现在我之前迁移的地方,我发现它与Django == 1.6.1和South == 0.8.4的版本没有关系,但是我的shell变得混乱了我正在使用的virtualenv。我已经退出一个虚拟环境并取消激活,并使用“workon”启动另一个虚拟环境并运行模式迁移以更改字段的名称。当我运行./manage migrate时,我收到了错误。我退出了shell并再次启动了虚拟环境,一切都很好。

答案 2 :(得分:0)

首先,您永远不会导入migrations。它不是要导入的模块,它是一个执行的命令工具。

其次,1.7版本的Django引入了迁移,你说你使用的是1.5,所以你无法使用它。

在Django 1.7之前,人们过去常常与South合作,因为South让您能够在数据库中进行迁移。使用Django 1.7,你不再需要South了,因为Django中已经包含了迁移。换句话说,South在版本1.7中被包含在Django中。

请看一下这个链接:https://docs.djangoproject.com/en/1.7/topics/migrations/

他们解释说他们包括迁移到Django。

实际上,South的最后一个版本是版本1.0,他们宣布他们不会发布更多版本,因为他们正在开发包含South的Django 1.7版本。他们将支持当前版本,但他们不会添加更多功能。

请看一下这个链接:http://south.readthedocs.org/en/latest/releasenotes/1.0.html

他们解释说,1.0是South的最后一个主要版本,因为他们正在开展Django 1.7迁移。