Django:无法运行自定义命令

10 投票
2 回答
9738 浏览
提问于 2025-04-16 07:43

我写了一个简单的自定义命令,叫做 hello.py:

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 hello 时,它返回了

未知命令:'hello'

  • 我把它放在了我的应用下的 management/commands 目录里。
  • 我在 management 和 commands 目录里添加了 __init__.py 文件。
  • 我检查了我的应用是否在 settings.py 的 INSTALLED_APPS 里。
  • 我还尝试在不同的应用和项目根目录下安装它。

运行 python manage.py syncdb 等命令是没问题的。而且如果我在命令行输入 python,我可以正常导入 django.core.management。

我知道我肯定漏掉了什么明显的东西,但就是想不起来是什么。

我该怎么调试,找出为什么我的自定义命令无法运行呢?

2 个回答

-1

这是因为在“management”和“commands”文件夹里,__init__.pyc 文件不会自动生成。你需要把 your_app/__init__.pyyour_app/__init__.pyc 这两个文件复制,然后粘贴到 management/ 和 commands/ 文件夹里。

8

问题是我在PYTHONPATH里有另一个项目。哎呀!我觉得它首先找到了那个项目里的settings.py,所以没有看到我的应用。让我想到这个方向的是,我尝试运行命令python manage.py create_jobs myapp(这是django命令扩展的一部分),结果返回了一个错误,提示找不到这个应用。另外,@knutin也提到了INSTALLED_APPS。

撰写回答