2012-01-13 10 views
1

このコマンド見つからない理由を私は理解していない:これが正常に動作すると実行Djangoのカスタム管理コマンド - パスの問題

[email protected]:/opt/code/cdcschool$ python schoolcommand/manage.py createcampaign 
Unknown command: 'createcampaign' 
Type 'manage.py help' for usage. 

を:

[email protected]:/opt/code/cdcschool$ cd schoolcommand/ 
[email protected]:/opt/code/cdcschool/schoolcommand$ python manage.py createcampaign 
Error: Provide: <type start_date end_date> 

私のコマンドがある場所です位置:私が行うことができるように

$ ls schoolcommand/management/ 
commands __init__.py __init__.pyc 

$ ls schoolcommand/management/commands/ 
campaignmanager.py createcampaign.py __init__.py 
campaignmanager.pyc createcampaign.pyc __init__.pyc 

は、どのように私はそれを修正します:

[email protected]:/opt/code/cdcschool$ python schoolcommand/manage.py createcampaign 

ここには、私のPYTHONPATH、DJANGO_SETTINGS_MODULEの値とsettings.pyがある場所があります。

[email protected]:/opt/code/cdcschool$ ls 
Procfile README requirements.txt schoolcommand 
[email protected]:/opt/code/cdcschool$ echo $PYTHONPATH 

[email protected]:/opt/code/cdcschool$ echo $DJANGO_SETTINGS_MODULE 

[email protected]:/opt/code/cdcschool$ find . -name settings.py 
./schoolcommand/settings.py 
[email protected]:/opt/code/cdcschool$ 
+0

私の最終的な質問にはタイプミスがありました。これは修正されました。 – Khandelwal

+0

あまりにも多くの 'settings.py'モジュールが浮遊しているかもしれません。 'settings.py'を持っているすべての場所を示すディレクトリ構造の要約を提供してください。または。あなたの 'DJANGO_SETTINGS_MODULE'には相対パスがあります。この環境変数の値を含めます。または。あなたの 'PYTHONPATH'には相対パスがあります。この環境変数の設定も含めてください。 –

+0

上記の環境変数の内容と設定ファイルの場所を追加しました。 – Khandelwal

答えて

4

Djangoを使用する場合、2つの重要なルールがあります。

最初。

あなたは Webサーバとすべて manage.pyのコマンドによって使用されなければならないsettings.pyファイルを持っています。それらのすべて。

settings.pyファイルを検索するデフォルトの場所は、現在の作業ディレクトリです。これは、PYTHONPATHDJANGO_SETTINGS_MODULEという環境変数で変更できます。

manage.pyは、settings.pyと同じディレクトリに作成されます。

manage.pyを使用しない場合は、django-admin.py --settings=some.moduleを使用できます。

秒。

manage.pyコマンドには「パス」はありません。アプリケーションツリーにどこに住んでいるかにかかわらず、それらはすべて1単語のコマンドです。

あなたはこれを行うことはありませんpython schoolcommand/manage.py createcampaignをしない限り(何とか)あなたsettings.pyがあなたのmanage.pyと同じディレクトリにありません。

あなたは、通常はこれを行う:あなたの設定がcode/schoolcommandである

cd /path/to/your/settings 
python manage.py createcampaign 

場合、それはあなたのウェブサイトや、すべてのコマンドがそのディレクトリで動作することを意味します。

関連する問題