2010-02-03 87 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