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 help、コマンドmigrateschemamigrationコマンドが一覧表示されません。

settings.pyファイルに「south」がリストされていることを再確認しましたINSTALLED_APPS(プル後にこのファイルを変更しませんでした)。

試しpip uninstall southてからもう一度実行pip install -r requirements.txtしましたが、それでも同じエラーが発生します。

本当に助けていただければ幸いです!

4

6 に答える 6

14

これは主に、pipによってインストールされた最後の安定バージョン(1.6)を入手したときに、1.7(DEVバージョン)チュートリアルに従うことが原因です。

1.6チュートリアルに従うか、指示に従ってDjangoの1.7開発バージョンをインストールします。

于 2014-03-05T03:57:28.137 に答える
8

パッケージのインポートを成功させるだけでは、Django管理コマンドには不十分です。Pythonはzip形式の卵から簡単にパッケージをインポートできますが、Djangoには通常の非圧縮ファイルが必要です。

最初に問題を単純化するアドバイス:

  1. 管理コマンドは、通常のディレクトリpath..to..south/management/commands(zip形式ではない)にファイルとして存在する必要があります。
  2. 南の古いインストールを手動で見つけて削除してみてください。よくある問題は、一部のパッケージの1つのバージョンがeasy_install(zip形式)または「pythonsetup.py install」によって手動でインストールされたが、pipがそれをアンインストールせず、2回目にインストールしたことでした。
  3. Pythonパスでは絶対ディレクトリのみを使用してください。インストーラーとDjangoの実行の間で、環境内で、または可能であればカスタマイズされた管理またはsettings.pyによってPythonパスを変更しないでください。一部のmanage.pyまたはsettings.pyは、パッケージintallerで使用されるものとは異なるPythonパスを使用します。たとえば、「。」を追加します。または他のディレクトリの前に「..」。プロジェクト内またはプロジェクト内に他のsouthディレクトリを配置しないでください。...

アドバイス1はDjangoの絶対的な要件です。他の2つは、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に「south」を追加しました。これで機能しました。

于 2013-11-25T18:37:51.787 に答える
3

同じエラーが発生しましたが、理由は異なります。やった:

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

ただし、settingsパラメータを使用する場合は、ファイルの名前ではなく、モジュールの名前を渡す必要があります。だからそれはすべきだった

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

そのようなvalidateコマンドを実行すると、まともなエラーメッセージが表示されますが、southコマンドを実行すると、コマンドが不明であると表示されます:/

于 2013-05-02T15:11:46.773 に答える
0

私の場合。サウスはすでにインストールされていますが、後で要件が他のライブラリの原因になりました。

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 に答える