南:未知命令'迁移'

Ale*_*dre 10 python migration django pip django-south

我变得无情了

$ python manage.py migrate
Unknown command: 'migrate'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)

我把代码从github上拉到一台新电脑上.此代码已经过测试,可以在其他计算机上运行.整个代码运行正常,除了我无法运行迁移!

安装我的虚拟环境并运行pip install -r requirements.txt.它安装了一切,包括南方.我可以通过跑步检查

$ python manage.py shell
>>> import south
>>> south.__version__
'0.7.3'
Run Code Online (Sandbox Code Playgroud)

但是,当我运行时manage.py help,migrateschemamigration命令不会出现列出.

我仔细检查了我的settings.py文件是否已在"南方"列出INSTALLED_APPS(拉后我没有更改此文件).

我尝试pip uninstall south然后pip install -r requirements.txt再次运行,但我仍然得到同样的错误.

非常感谢任何帮助!

R C*_*ven 14

这主要是由于我们都得到了由pip安装的最后一个稳定版本(1.6)的1.7(DEV版本)教程.

按照1.6教程或按照说明安装1.7 dev版本的Django.


hyn*_*cer 8

对于Django管理命令,成功导入包是不够的.Python可以从压缩的蛋中轻松导入包,但Django需要一个普通的未压缩文件.

最初简化您的问题的建议:

  1. 管理命令必须作为普通目录path..to..south/management/commands(非压缩)中的文件存在.
  2. 尝试手动查找并删除旧的南方安装.一个常见问题是某个软件包的一个版本已通过easy_install(zipped)安装或通过"python setup.py install"手动安装,但是pip没有卸载它并第二次安装它.
  3. 在python路径中仅使用绝对目录.不要在环境中或通过自定义管理或settings.py更改安装程序和运行Django之间的python路径.manage.py或settings.py中的一些使用与包intallers使用的python路径不同的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__)
Run Code Online (Sandbox Code Playgroud)


sam*_*uru 5

我通过访问http://south.readthedocs.org/en/latest/installation.html并使用easy_install南来解决了这个问题.然后我将'south'添加到我的INSTALLED_APPS中并且它有效.