Django South错误:“没有启用的应用程序匹配'myapp'”

时间:2013-07-07 08:04:12

标签: python django django-south

所以,我终于屈服了并抓住了南方。问题是,每次我尝试按照教程运行

"python manage.py schemamigration myapp --initial"

我收到错误

"There is no enabled application matching 'myapp'"

- 我尝试过的事情 -

我已经检查了我的设置文件,从django shell运行Import South没有返回错误,我已经将包含manage.py的文件夹添加到PYTHONPATH,以及wsgi.py和settings.py。

我已经运行了python manage.py和python C:\ path \ to \ manage.py变种,甚至进入了我的python目录并验证了南部位于site-packages文件夹中。 syncdb运行正常,以“未同步(使用迁移)”结束。 python manage.py migrate运行时没有返回错误,但似乎没有任何效果。我已经尝试在运行syncdb之前和之后运行所述命令,这对结果没有影响。

- 其他可能相关的信息 -

Django 1.5.1,Python 2.7,没有使用其他外部应用程序,Windows 7 64位,python被添加到Windows路径,南安装通过python setup.py安装命令。安装成功完成。我不使用virtualenv,并且真的更愿意避免这种情况,因为这意味着很多重构当前项目的设置和浪费时间。我计划将来转向virtualenv设置,但不是现在。

发生了什么事?我该如何解决?网络搜索显示没有任何好消息,我完全不知所措......

3 个答案:

答案 0 :(得分:7)

此错误可能会产生误导:当South尝试导入应用程序时,它会被抛出,但是当它尝试获取应用程序的models模块时。

  • 也许它无法导入应用程序(因为您没有将其名称添加到INSTALLED_APPS
  • 可能无法导入models模块,因为文件models.py不存在,或者因为目录models/不包含__init__.py

South不会导入models模块本身。相反,它将该作业留给django.db.models.get_app('app_of_interest'),根据其文档字符串“返回包含给定app_label的模型的模块”。事实上,get_app引发的错误消息会有所不同,具体取决于它是否无法导入应用程序或模型,但两个例外都是ImproperlyConfigured,而schemamigrations脚本不是看起来比这更深。

因为South表示它只接受安全更新(它使用Django 1.7的迁移功能进入了生命周期),所以我不是在修改代码库,而是在这里记录问题。

答案 1 :(得分:3)

每个应用程序都存在迁移。每个应用程序可能有也可能没有自己的迁移,但您需要为要使用它们的每个应用程序创建它们。 (通常是所有应用程序)

./manage.py migrate是一种为所有应用程序运行迁移的快捷方式

答案 2 :(得分:3)

检查您是否在settings.py

中的INSTALLED_APPS中包含了应用名称