2010-11-28 55 views
8

我寫了一個簡單的自定義命令,hello.py:Django的:不能運行自定義命令

from django.core.management.base import NoArgsCommand 

class Command(NoArgsCommand): 
    help = "prints hello world" 

    def handle_noargs(self, **options): 
     print "Hello, World!" 

當我運行python manage.py招呼返回

未知命令:「你好'

  • 我把它放在我的應用程序下的management/commands目錄下。
  • 我已將__init__.py文件添加到管理和命令目錄。
  • 我檢查了我的應用程序是在INSTALLED_APPS settings.py中
  • 我試過在不同的應用程序,並從項目的根太

執行Python manage.py執行syncdb等安裝它是好的。如果我在命令行輸入python,我可以導入django.core.management。

我知道我錯過了一些明顯的東西,但無法弄清楚什麼。

我該如何調試以找出爲什麼我的自定義命令不能運行?

+1

'檢查我的應用程序是在settings.py',你的意思是它在INSTALLED_APPS? – knutin 2010-11-28 10:37:51

+0

您的系統上是否有多個Python版本/安裝? 'python'會告訴你在運行'python manage.py'時運行的是什麼python版本,運行'env python'會啓動'./manage.py'啓動的python。它是相同的版本嗎? – knutin 2010-11-28 10:39:46

回答

6

問題是我的PYTHONPATH上有另一個項目。 D'哦!我認爲這是從那裏拿起settings.py所以沒有看到我的應用程序。這個方向指向我的是我試着運行python manage.py create_jobs myapp(來自django命令擴展),它返回一個錯誤,指示應用程序找不到。 @knutin還提到INSTALLED_APPS。

0

這是因爲__init__.pyc未在「管理」和「命令」文件夾中自動創建。 將your_app/__init__.pyyour_app/__init__.pyc複製並粘貼到management /和commands /文件夾中。