2012-01-13 132 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 2012-01-13 21:37:55

+0

你可能有太多的'settings.py'模塊。請提供目錄結構的摘要,其中顯示了所有你擁有'settings.py'的地方。要麼。你的'DJANGO_SETTINGS_MODULE'中有一個「相對」路徑。包含此環境變量的值。要麼。你的'PYTHONPATH'有一個相對路徑。請也包括這個環境變量的設置。 – 2012-01-13 21:40:04

+0

添加了上述環境變量的內容以及設置文件的位置。 – Khandelwal 2012-01-13 21:53:10

回答

4

當您使用Django時,有兩條重要規則。

首先。

你有一個settings.py文件,該文件必須由Web服務器使用,並所有的manage.py命令。他們全部。

查找settings.py文件的默認位置是當前工作目錄。您可以使用PYTHONPATHDJANGO_SETTINGS_MODULE環境變量對此進行更改。

manage.py是在和settings.py相同的目錄下爲你創建的。如果你不想使用manage.py,你可以使用django-admin.py --settings=some.module

二。

manage.py命令對它們沒有任何「路徑」。無論它們發生在應用程序樹中的哪個位置,它們都只是一個單詞的命令。

從未做到這一點:除非python schoolcommand/manage.py createcampaign(不知)你settings.py不在同一目錄下manage.py

通常做到這一點:

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

如果您的設置是在code/schoolcommand這意味着,您的網站和你的所有命令都將在該目錄中運行。