所以,我终于屈服了并抓住了南方。问题是,每次我尝试按照教程运行
"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设置,但不是现在。
发生了什么事?我该如何解决?网络搜索显示没有任何好消息,我完全不知所措......
答案 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中包含了应用名称