Python 从django.db导入模型中,迁移导入错误:无法导入名称迁移

Python 从django.db导入模型中,迁移导入错误:无法导入名称迁移,python,django,django-south,migrate,Python,Django,Django South,Migrate,因此,我开始在Django web服务器上遇到一些有关south的问题。 每次使用此输出时,Migrate命令都失败: from django.db import models, migrations ImportError: cannot import name migrations (在此上方,该错误显示到未能迁移的文件的路由) 我的Django版本是1.5.1,而我的南方版本是0.8.4 最让我烦恼的是,没有找到模块django.db.migrations 有什么想法吗?Django

因此,我开始在Django web服务器上遇到一些有关south的问题。 每次使用此输出时,Migrate命令都失败:

from django.db import models, migrations

ImportError: cannot import name migrations 
(在此上方,该错误显示到未能迁移的文件的路由)

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

最让我烦恼的是,没有找到模块django.db.migrations


有什么想法吗?

Django 1.7引入了迁移;您正在使用1.5。

这是一本书。如果您使用的是较旧版本的Django,则它是数据迁移最常用的选项


编辑

因此,Django Rest框架导致了错误。根据他们的文件:

rest_framework.authtoken应用程序包括Django本机和 迁移(对于Django版本>1.7)和南迁移(对于Django版本
版本首先,您从不导入
迁移
。它不是要导入的模块,而是要执行的命令工具

第二,Django在1.7版本中引入了迁移,您说您正在使用1.5,所以您将无法使用它

在Django 1.7之前,人们习惯于使用South,因为South使您能够在数据库中进行迁移。在Django 1.7中,您不再需要South,因为迁移已经包含在Django中。换句话说,South在1.7版中包含在Django中

请查看此链接:

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

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

请查看此链接:


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

我认为OP没有将迁移导入到他正在编写的脚本中,schemamigration创建的一个自动脚本可能是问题的根源


这个错误突然出现在我以前使用过迁移的地方,我发现这与Django==1.6.1和South==0.8.4的版本无关,而是因为我的shell对我使用的是哪个virtualenv感到困惑。我用deactivate退出了一个虚拟环境,用“workon”启动了另一个虚拟环境然后运行schemamigration以更改字段的名称。当我运行./manage migrate时,我遇到了错误。我退出了shell并再次启动了虚拟环境,一切都很好。

为什么要尝试从
django.db
导入
迁移
?此代码位于何处以及如何导入
迁移
代码中使用了什么?您试图实现什么?实际上,我不想在任何地方导入迁移。该代码位于要迁移的文件中:它是来自rest_framework.authtoken应用程序的代码,正如我在上面所解释的,它是我收到的错误消息的一部分。虽然这是真的,但不应该导入迁移。迁移是一个错误要执行的工具(通过
python manage.py makemigrations
和`python manage.py migrate')。它不是要导入的包。@我完全同意。我不主张导入迁移:-)也就是说,导入
migrations
不会在Django 1.7中引发错误。我理解这一点。导入它不是我做的,它包含在我尝试迁移的文件中。这是rest_framework.authtoken代码。@Pablo感谢您发布更多信息。请检查我的编辑以获得解决方案。升级到south 1.0确实解决了我的问题。谢谢@sgarza62!