2010-11-28 17 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 /文件夹中。