2010-02-03 20 views
24

Problemy z uzyskiwaniem niestandardowych poleceń django do pracy.Nie znaleziono niestandardowego polecenia django

Od Django documetation, umieściliśmy

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

myapp_task.py treść jest

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' 

kiedy prowadził

python manage.py myapp_task 

coraz błąd

Unknown command: 'myapp_task' 

Odpowiedz

35

Struktura katalogów w Twojej odpowiedzi jest trochę niejednoznaczna; umieszczając pliki w następujący sposób Django powinien być w stanie znaleźć swoją komendę:

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 

Ponadto musisz włączyć aplikację w swojej settings.py:

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

struktura plików jest poprawny, właśnie dostałem pomieszane wklejenie go tutaj – bocca

+0

jest on umieszczony w zainstalowanych aplikacjach w ustawieniach – bocca

+0

Bocca: Czy można naprawić wcięcia w liście plików w oryginalnym poście, a następnie ? Rzeczywista struktura jest bardzo ważna w tym przypadku. –

0

Myślę, że polecenia/musi znajdować się w katalogu zarządzania /.

+0

poleceń katalog jest w zarządzaniu – bocca

3

miałem ten sam problem. Powodem było to, że root projektu nie był w mojej $ PYTHONPATH. Rozwiązaniem w tym przypadku jest wpisanie (na komputerze z systemem Linux) coś takiego

PYTHONPATH=./project python manage.py myapp_task 
0

Jeśli projekt jest bajt skompilowany, django.core.management.find_commands() będzie wyglądać tylko dla plików .py. Jeśli twoje polecenia niestandardowe są w plikach .pyc, trzeba załatać django/core/Kierownictwo/polecenia/__ init__.py z plastra na https://code.djangoproject.com/ticket/19085

-1

To dlatego, że startowych .pyc nie zostanie utworzony automatycznie w ciągu " zarządzanie "i" polecenia "folder. Skopiuj your_app/__init__.py i your_app/__init__.pyc i wklej go w folderze zarządzania/i polecenia /.

+0

Czy to nie jest straszne włamanie? Dlaczego ktoś miałby się przejmować tym, czy istnieje .pyc? Czy nie jest to zadaniem python2 | 3, a nie powinno się wykonywać introspekcji lub czegokolwiek, co robi django-admin, aby znaleźć polecenia niezmiennicze, czy istnieje .pyc? – Herbert

Powiązane problemy