2009-02-04 13 views
14

मैं पहली बार Django का उपयोग कर एक अनुभवी PHP प्रोग्रामर हूं, और मुझे लगता है कि यह अविश्वसनीय है!Django इंस्टॉल किए गए ऐप्स स्थान

मेरे पास एक प्रोजेक्ट है जिसमें बहुत से ऐप्स हैं, इसलिए मैं उन्हें एक ऐप फ़ोल्डर में समूहित करना चाहता था।

तो परियोजना की संरचना है:

INSTALLED_APPS = (
    'project.apps.app1', 
    'project.apps.app2', 
) 

यह काम करने के लिए प्रतीत नहीं होता:

/project/ 
/project/apps/ 
/project/apps/app1/ 
/project/apps/app2 

तब मैं इस डाल दिया है Django सेटिंग्स में?

कोई विचार है कि आप अपने सभी ऐप्स को एक अलग फ़ोल्डर में कैसे डाल सकते हैं, न कि प्रोजेक्ट रूट में?

बहुत धन्यवाद।

+0

आप कर रहे हैं

यहाँ अपने पढ़ने के आनंद के लिए अजगर खोज पथ के बारे में प्रलेखन है PythonPATH का उपयोग कर? यदि ऐसा है, तो कृपया उस मान को भी प्रदान करें। –

उत्तर

37

सुनिश्चित करें कि '__init__.py' फ़ाइल है आपकी ऐप्लिकेशन निर्देशिका में, अगर यह वहां नहीं है यह पैकेज के भाग के रूप में मान्यता प्राप्त नहीं किया जाएगा।

तो फोल्डर यहां से प्रत्येक उस में '__init__.py' फ़ाइल होनी चाहिए। (खाली ठीक रहेगा)।

/project/ 
/project/apps/ 
/project/apps/app1/ 
/project/apps/app2 

तब तक जब तक आपकी रूट 'मॉड्यूल' फ़ोल्डर आपके पायथनपैथ में है, तो आप अपने ऐप्स से आयात करने में सक्षम होंगे।

http://docs.python.org/install/index.html#modifying-python-s-search-path

और क्या __init__.py फ़ाइल के लिए है का एक अच्छा इसे आसानी से समझा:

http://effbot.org/pyfaq/what-is-init-py-used-for.htm

+1

यदि इनमें से कोई भी ऐप्स संभावित रूप से पुन: प्रयोज्य होने के लिए पर्याप्त सामान्य है (और यदि आप कर सकते हैं तो उन्हें बनाना एक अच्छा विचार है), तो आप उन्हें पथ पथ में रखकर सिरदर्द बचा सकते हैं जो उन्हें परियोजना से नहीं जोड़ता है। –

+0

सहमत हैं, यह एक अच्छा मुद्दा है। – monkut

1

जब तक आपके ऐप्स आपके पायथनपैथ में हों, तब तक सब कुछ काम करना चाहिए। उस पर्यावरण चर को अपने ऐप्स वाले फ़ोल्डर में सेट करने का प्रयास करें।

PYTHONPATH="/path/to/your/apps/dir/:$PYTHONPATH" 
0

आपका उच्च-स्तरीय urls.py (भी अपने settings.py में नाम) एक सरल "आयात" कथन का उपयोग करने के लिए अपने आवेदन पत्र प्राप्त करने के लिए सक्षम होना चाहिए।

import project.apps.app1.urls काम करता है? यदि नहीं, तो आपके PYTHONPATH ठीक से सेट नहीं है, या आपने अपनी परियोजना को पायथन की site-packages निर्देशिका में इंस्टॉल नहीं किया है।

मैं साइट-पैकेज में स्थापित करने के बजाय PYTHONPATH पर्यावरण चर का उपयोग करने का सुझाव देता हूं। Django अनुप्रयोग (मेरे लिए, वैसे भी) बाहरी साइट-पैकेज के बाहर प्रबंधित करना आसान लगता है।

हम निम्न कार्य करें:

  • Django परियोजनाओं /opt/project/ में जाना।

  • PYTHONPATH में /opt/project शामिल हैं।

  • हमारे settings.py का उपयोग करता apps.this और apps.that (ध्यान दें कि नाम की project हिस्सा PYTHONPATH का हिस्सा है, आयात का हिस्सा नहीं है।

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