10

我变得无情

$ 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 helpmigrateschemamigration没有列出命令。

我仔细检查了我的settings.py文件是否在下面列出了“南” INSTALLED_APPS(拉后我没有更改此文件)。

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

非常感谢任何帮助!

4

6 回答 6

14

这主要是由于我们都通过 pip 安装了最后一个稳定版本(1.6)时遵循 1.7(DEV 版本)教程造成的。

按照1.6 教程或按照说明安装 1.7 开发版 Django。

于 2014-03-05T03:57:28.137 回答
8

对于 Django 管理命令来说,成功导入包是不够的。Python 可以很容易地从一个压缩的鸡蛋中导入一个包,但 Django 需要一个普通的未压缩文件。

最初简化问题的建议:

  1. 管理命令必须作为文件存在于普通目录中path..to..south/management/commands(非压缩文件)。
  2. 尝试手动查找和删除 south 的旧安装。一个常见的问题是,某个软件包的一个版本已通过 easy_install(压缩)或“python setup.py install”手动安装,但 pip 没有卸载它并第二次安装它。
  3. 在 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__)
于 2012-09-10T09:03:15.387 回答
5

我通过访问http://south.readthedocs.org/en/latest/installation.html并使用 easy_install south 解决了这个问题。然后我在我的 INSTALLED_APPS 中添加了“南”,它起作用了。

于 2013-11-25T18:37:51.787 回答
3

我得到了同样的错误,但出于不同的原因。我做了:

$ python manage.py migrate my_app --settings=settings_dev.py

但是使用设置参数,您应该传递模块的名称而不是文件的名称。所以应该是

$ python manage.py migrate my_app --settings=settings_dev

当您像这样运行validate命令时,您会收到一条不错的错误消息,但是当您运行 south 命令时,它会说该命令是未知的:/

于 2013-05-02T15:11:46.773 回答
0

就我而言。south 已经安装,但后来要求是其他库的原因:

pip install -r requirements.txt

我不知道为什么 manage.py 没有抱怨他们。

于 2013-06-09T10:45:19.693 回答
0

我有这个,但结果是我的错误,settings.py当我尝试时出现了runserver。修复了错误,命令又回来了。基本上没有任何应用程序的管理命令在那里,所以我的INSTALLED_APPS必须已经被覆盖或从一开始就没有被写入。就我而言,设置文件的导入失败了。

于 2014-11-06T12:16:52.330 回答