Django: Can't run custom commands
I've written a simple custom command, hello.py:
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
help = "prints hello world"
def handle_noargs(self, **options):
print "Hello, World!"
When I run python manage.py hello it returns
Unknown command: 'hello'
- I've put it in the management/commands directory beneath my app.
- I've added __init__.py files to the management and commands directory.
- I've checked my app is in INSTALLED_APPS in settings.py
- I've tried installing it in different apps and from the project root too
Running python manage.py syncdb etc is fine. And if I type python at the command line I can import django.core.management ok.
I know I'm missing somethin开发者_运维技巧g obvious, but can't figure out what.
How can I debug this to work out why my custom command won't run?
The problem was that I had another project on my PYTHONPATH. D'oh! I think it was picking up the settings.py from there first so didn't see my app. What pointed me in this direction was I tried running python manage.py create_jobs myapp (from django command extensions) and it returned an error indicating the app couldn't be found. Also @knutin mentioned INSTALLED_APPS.
It is because the __init__.pyc
does not get created automatically within "management" and "commands" folder.
Copy your_app/__init__.py
and your_app/__init__.pyc
and paste it within the management/ and commands/ folder.
精彩评论