15

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

"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 目录并验证了 south 在 site-packages 文件夹中。syncdb 运行良好,以“未同步(使用迁移)”结尾。python manage.py migrate 运行时没有返回错误,但似乎没有任何效果。我曾尝试在运行 syncdb 之前和之后运行上述命令,这对结果没有影响。

--其他可能相关的信息--

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

这是怎么回事?我该如何解决?网络搜索显示没有任何好的信息,我完全不知所措......

4

3 回答 3

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 的迁移功能进入生命周期结束),所以我没有提交对其代码库的修复,而是在此处记录问题。

于 2014-07-25T09:59:38.207 回答
3

检查一次是否在 settings.py 的 INSTALLED_APPS 中包含应用名称

于 2014-06-22T14:50:07.183 回答
3

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

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

于 2013-07-07T08:23:39.107 回答