Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 南部:未知指挥部';迁移';_Python_Django_Migration_Pip_Django South - Fatal编程技术网

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,现在一切都正常了。你对我的详细解释投了赞成票