2010-02-03 88 views
24

有问题让django自定义命令工作。django自定义命令未找到

从Django中documetation,已经放置

application/ 
    manage.py 
    blog/ 
     __init__.py 
     models.py 
     management/ 
      __init__.py 
      commands/ 
       __init__.py 
       myapp_task.py 
     views.py 

myapp_task.py含量是

from django.core.management.base import NoArgsCommand 

class Command(NoArgsCommand): 
    def handle_noargs(self, **options): 
     print 'Doing task...' 
     # invoke the functions you need to run on your project here 
     print 'Done' 

当跑

python manage.py myapp_task 

得到错误

Unknown command: 'myapp_task' 

回答

35

答案中的目录结构有点模糊;放置文件时,如下Django的应该能找到你的命令:

project/ # in your question this would be 'application' 
    manage.py 
    blog/ 
     __init__.py 
     models.py 
     management/ 
      __init__.py 
      commands/ 
       __init__.py 
       myapp_task.py 
     views.py 

此外,你需要让你的应用程序在你的settings.py

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.admin', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'blog', # <= your app here ... 
) 
+0

文件结构是正确的,刚到这里 – bocca 2010-02-03 08:46:04

+0

搞砸粘贴它,它在安装的应用程序中设置 – bocca 2010-02-03 08:53:44

+0

虎门上市:你能给缩进在文件列表在原岗位,然后?在这种情况下,实际的结构非常重要。 – 2010-02-03 14:18:40

0

我认为命令/需要在管理/目录中。

+0

命令目录管理 – bocca 2010-02-03 08:46:28

3

我有同样的问题。原因是项目根目录不在我的$ PYTHONPATH中。在这种情况下的解决方法是键入(在Linux机器上)像

PYTHONPATH=./project python manage.py myapp_task 
-1

用补丁修补的Django /核心/管理/命令/ __ init__.py这是因为初始化 .pyc文件不会被内“自动创建管理“和”命令“文件夹。复制your_app/__init__.pyyour_app/__init__.pyc并将其粘贴到管理/和命令/文件夹中。

+0

这不是一个可怕的黑客吗?为什么需要为.pyc是否存在而烦恼?是不是python2 | 3的工作要编译,而且不应该是运行时自省或者其他任何django-admin所做的命令都不能确定.pyc是否存在? – Herbert 2016-08-11 07:21:50