南:未知命令“迁移”
问题内容:
我变得无情
$ python manage.py migrate
Unknown command: 'migrate'
Type 'manage.py help' for usage.
我将代码从github拉到一台新计算机上。此代码已经过测试,并且可以在其他计算机上使用。整个代码运行良好,但无法运行迁移!
安装了我的虚拟环境并运行pip install -r requirements.txt
。它会安装所有东西,包括南方。我可以通过运行检查
$ python manage.py shell
>>> import south
>>> south.__version__
'0.7.3'
但是,当我运行时manage.py help
,migrate
和schemamigration
命令不会出现在列表中。
我settings.py
再次检查了我的文件是否在“南”下列出INSTALLED_APPS
(拉出后我没有更改此文件)。
我尝试过pip uninstall south
,然后pip install -r requirements.txt
再次运行,但是仍然遇到相同的错误。
非常感谢您的帮助!
问题答案:
对于Django管理命令而言,成功导入软件包是不够的。Python可以轻松地从压缩鸡蛋中导入软件包,但是Django需要一个正常的未压缩文件。
最初可以简化您的问题的建议:
- 管理命令必须作为文件存在于普通目录中
path..to..south/management/commands
(未压缩)。 - 尝试手动查找和删除South的旧安装。一个常见的问题是,某些软件包的一个版本已通过easy_install(压缩)安装或通过“ python setup.py install”手动安装,但pip没有卸载并第二次安装。
- 在python路径中仅使用绝对目录。如果可能,请勿在环境中或通过自定义的manage或settings.py更改安装程序与运行Django之间的python路径。一些manage.py或settings.py使用的Python路径与软件包安装程序使用的路径不同,例如,添加了“。” 或“ ..”在其他目录之前。您的项目
south
中.
或..
项目中不应有其他目录。
建议1是Django的绝对要求。即使我以某种方式使用多个版本来使用多个版本的Python,Django等测试我的应用程序,其他两个也非常有用。
主要需求调查示例:
$ python manage.py shell
>>> import os
>>> import south.management.commands.migrate
>>> assert os.path.isfile(south.management.commands.migrate.__file__)