2010-02-03 19 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' 
0 हो रही है

उत्तर

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

+0

गड़बड़ यह सेटिंग – bocca

+0

बोक्का में इंस्टॉल किए गए एप्लिकेशन में सूचीबद्ध है गया: यदि आप मूल पोस्ट में फ़ाइलों की अपनी सूची में खिसकने को ठीक कर सकते हैं, तो ? इस उदाहरण में वास्तविक संरचना बहुत महत्वपूर्ण है। –

0

मुझे लगता है कि प्रबंधन/निर्देशिका के अंदर आदेश/आवश्यकताएं हैं।

+0

आदेशों निर्देशिका प्रबंधन – bocca

3

मैं एक ही समस्या थी। कारण यह था कि परियोजना रूट मेरी $ PythonPATH में नहीं था। इस मामले में समाधान (एक Linux मशीन पर) परियोजना बाइट-संकलित, django.core.management.find_commands() केवल .py फ़ाइलों के लिए दिखेगा है टाइप करने के लिए की तरह

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

पर पैच के साथ Django/कोर/प्रबंधन/आदेशों/__ init__.py पैच करने के लिए की जरूरत है यह इसलिए क्योंकि init .pyc स्वचालित रूप से भीतर "बनाया नहीं प्राप्त करता है प्रबंधन "और" आदेश "फ़ोल्डर। your_app/__init__.py और your_app/__init__.pyc कॉपी करें और इसे प्रबंधन/और आदेश/फ़ोल्डर में पेस्ट करें।

+0

क्या यह एक भयानक हैक नहीं है? किसी को परेशान होना होगा कि क्या .pyc मौजूद है या नहीं? क्या यह python2 नहीं है 3 संकलन करने के लिए नौकरी, और रनटाइम आत्मनिरीक्षण नहीं करना चाहिए या जो भी django-admin कमांड ढूंढने के लिए करता है, क्या यह है कि .pyc मौजूद है या नहीं? – Herbert

संबंधित मुद्दे