Python 南部:未知指挥部';迁移';
我被狠狠地揍了一顿Python 南部:未知指挥部';迁移';,python,django,migration,pip,django-south,Python,Django,Migration,Pip,Django South,我被狠狠地揍了一顿 $ python manage.py migrate Unknown command: 'migrate' Type 'manage.py help' for usage. 我把代码从github拉到一台新的计算机上。此代码经过测试并在其他计算机上运行。整个代码运行良好,除了我不能运行迁移 安装了我的虚拟环境并运行了pip安装-r requirements.txt。它安装了所有设备,包括南方。我可以通过跑步来检查 $ python manage.py shell >&
$ python manage.py migrate
Unknown command: 'migrate'
Type 'manage.py help' for usage.
我把代码从github拉到一台新的计算机上。此代码经过测试并在其他计算机上运行。整个代码运行良好,除了我不能运行迁移
安装了我的虚拟环境并运行了pip安装-r requirements.txt
。它安装了所有设备,包括南方。我可以通过跑步来检查
$ python manage.py shell
>>> import south
>>> south.__version__
'0.7.3'
但是,当我运行manage.py帮助时,migrate
和schemamigration
命令不会显示在列表中
我仔细检查了我的settings.py
文件是否在INSTALLED\u APPS
下列出了“south”(拉取后我没有更改此文件)
我尝试了pip-uninstall-south
,然后再次运行pip-install-r requirements.txt
,但仍然出现相同的错误
非常感谢您的帮助 成功导入包对于Django管理命令是不够的。Python可以很容易地从压缩鸡蛋中导入包,但Django需要一个普通的未压缩文件
最初简化问题的建议:
管理命令必须作为文件存在于普通目录path..to..south/Management/commands
(未压缩)中
尝试手动查找并删除south的旧安装。
一个常见的问题是,easy_install(zipped)或“python setup.py install”手动安装了某个软件包的一个版本,但pip没有卸载它,而是第二次安装了它
在python路径中仅使用绝对目录。不要在环境中或通过定制的manage或settings.py(如果可能)更改安装程序和运行Django之间的python路径。某些manage.py或settings.py使用的python路径与package intallers使用的不同,例如在其他目录之前添加“.”或“.”。您不应该在项目中的
或中有其他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__)
我也犯了同样的错误,但原因不同。我做到了:
$ python manage.py migrate my_app --settings=settings_dev.py
但是使用settings参数,您应该传递模块的名称,而不是文件的名称。所以应该是这样
$ python manage.py migrate my_app --settings=settings_dev
当您像这样运行validate命令时,会收到一条相当不错的错误消息,但是当您运行south命令时,它会说该命令未知://。south已经安装,但后来的需求是其他库的原因:
pip install -r requirements.txt
我不知道为什么manage.py没有抱怨它们。我到这里使用easy\u install south解决了这个问题。然后,我将“south”添加到我安装的应用程序中,它起到了作用。这主要是因为我们都遵循了1.7(开发版本)教程,而pip安装了最后一个稳定版本(1.6)。
请按照或按照说明安装1.7 dev版本的Django。我有这个问题,但结果是我的设置.py
中出现了一个错误,当我尝试运行服务器时出现了这个错误。修复了错误,命令返回。基本上没有任何应用程序的管理命令,因此我的已安装的应用程序必须被覆盖或从未写入。在我的例子中,设置文件的导入失败了。请仔细检查你的已安装的应用程序。我检查了,已安装的应用程序下列出了“south”,根据你的建议,我得到了导入south.management.commands.migrate>>导入错误:没有名为migrate的模块
完美!它已经解决了,并且正在运行。我在中有一个名为“south”的文件夹。以前,我们在那里存储南方的东西,但后来我们决定使用pip。我们删除了该文件夹,但不知何故,删除操作一定没有进行版本控制。谢谢断言成功了,但我还是做不到migrate@OlegTikhonov当前位置对其他人来说,一个新问题在这么长时间后可能会更好。原始问题与消息“Unknown command:'migrate'”相关,与答案相关的上下文更多。显然,你的问题与问题中的问题不完全相同,因为你的测试结果相反。如果您看到相同的错误消息,这是非常奇怪的,但是您可以立即通过测试示例,而无需更改除“shell”“migrate”之外的任何内容。想一想。是的,我知道,我只是不想问无意义的问题,不管怎样,我只是用了manage.y,现在一切都正常了。你对我的详细解释投了赞成票