我写了一个简单的自定义命令,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 它会返回
未知命令:'你好'
运行 python manage.pysyncdb 等就可以了。如果我在命令行输入 python,我可以导入 django.core.management ok。
我知道我错过了一些明显的东西,但无法弄清楚是什么。
如何调试它以找出为什么我的自定义命令无法运行?
问题是我的 PYTHONPATH 上还有另一个项目。噢!我认为它首先从那里获取settings.py,所以没有看到我的应用程序。向我指出这个方向的是我尝试运行 python manage.py create_jobs myapp (来自 django 命令扩展),它返回一个错误,指示无法找到该应用程序。 @knutin 还提到了 INSTALLED_APPS。
要解决此问题:我将管理文件夹在文件夹树中上移一级。换句话说,与 settings.py 在同一文件夹中
这是因为
__init__.pyc
不会在“管理”和“命令”文件夹中自动创建。
复制 your_app/__init__.py
和 your_app/__init__.pyc
并将其粘贴到 Management/ 和 Commands/ 文件夹中。