9

जावा विकास से आ रहा है जहां निर्माण और परियोजना प्रबंधन उपकरण बहुत अधिक हैं, मैं जानना चाहता हूं कि Django के लिए क्या उपलब्ध है। मैं वास्तव में चीजों के निर्माण के लिए मेवेन की तरह कुछ उपयोग करना चाहता हूं, लेकिन क्या ऐसा करने का एक और पसंदीदा तरीका है?एक Django परियोजना के लिए परियोजना प्रबंधन/निर्माण उपकरण?

मैं वास्तव में निम्नलिखित के लिए देख रहा हूँ:

  • कमांड लाइन निर्माण: mvn install सिर्फ इतना आसान और शांत है।
  • कमांड लाइन परीक्षण-रन। मैं इस ऐप को निरंतर एकीकरण के लिए हडसन जैसे कुछ में एकीकृत करना चाहता हूं, क्योंकि मैं इस तरह कट्टर हूं।
  • स्थानीय परीक्षण सर्वर से मीडिया की तैनाती (जे एस, सीएसएस, छवियों, आदि)

इस वर्तमान Maven या किसी अन्य उपकरण के साथ संभव है? मैं यहां एक बहुत बड़ी परियोजना शुरू कर रहा हूं और मैं समय के साथ बढ़ने में सक्षम होने के लिए मेवेन जैसे एक लात मारने वाला रेड बिल्ड/प्रोजेक्ट मैनेजमेंट सिस्टम चाहता हूं।

उत्तर

7

दो उपकरणों मन जो दोनों सामान्य अजगर उपकरण हैं के लिए आते हैं - वे Django विशेष रूप से साथ काम करने की जरूरत नहीं:

  • Fabric। हम इसका इस्तेमाल करते हैं; यह हमें रिमोट कमांड लिखने की इजाजत देता है जैसे कि हम एसएसएच में थे, कोड अपलोड करें आदि। यह इतना नहीं है कि आप ऐसा नहीं कर सकते हैं और क्योंकि यह अनिवार्य रूप से पाइथन में लिखी गई एक बैश स्क्रिप्ट है, यह जाना बहुत आसान है। लेकिन यह अजगर में लिखी गई एक बैश स्क्रिप्ट भी है, जिसका अर्थ है कि आप अपने डीजेंगो ऐप के कुछ हिस्सों को आयात कर सकते हैं, अपने परीक्षण चला सकते हैं या अपनी तैनाती चलाने की प्रक्रिया में कुछ भी पाइथन कर सकते हैं।
  • Buildout। मैंने इसका उपयोग नहीं किया है, लेकिन हमारे डीजेंगो फ्रंटेंट डेवलपर ने मुझे बताया है कि यह बिल्कुल उपयोग करने का टूल है। अनुमान में, यह या तो एक ही विचार या थोड़ा अधिक अमूर्त, अधिक पायथन-उन्मुख समकक्ष है।

मुझे यकीन है कि अन्य पैकेज उपलब्ध हैं। सबसे अच्छी सलाह जो मैं आपको दे सकता हूं उन्हें संक्षेप में उनका मूल्यांकन करना और उस व्यक्ति को चुनना जो आपके परिदृश्य/टीम की कामकाजी शैली के अनुकूल है। ध्यान दें कि ये ज्यादातर तैनाती उपकरण हैं - पायथन में बनाता है वास्तव में समझ में नहीं आता है, क्योंकि आप पाइथन कोड संकलित नहीं करते हैं।

  • ./manage.py test सभी tests.py फ़ाइलों से अपने परीक्षण चलाता है:

    सीआई संबंधित सामान के मामले में, वहाँ से Django आप के बारे में पता करने की जरूरत तीन आदेशों हैं। ये मूल रूप से django- विशिष्ट वृद्धि unittest, एक पायथन पैकेज हैं।

  • ./manage.py collectstatic आपके चयन की निर्देशिका में स्थिर फाइलें एकत्र करता है; एक स्थिर मीडिया सर्वर पर मौजूद सभी बिट्स को एक साथ खींचने के लिए अत्यधिक उपयोगी है। यह कैसे काम करता है के लिए the static files howto पर एक नज़र डालें।
  • इस के लिए आपको South की आवश्यकता है, ./manage.py schemamigration app --auto && ./manage.py migrate app - यह अंतर्निहित एसक्यूएल स्कीमा में मॉडल परिवर्तन लागू करता है। असल में, यदि आप सिर्फ एक मॉडल बदलते हैं और दक्षिण का उपयोग नहीं करते हैं, तो Django बहुत परेशान हो जाएगा क्योंकि नया क्षेत्र पुरानी एसक्यूएल स्कीमा पर मैप नहीं करेगा और यह आपके मॉडल को जारी रखने में सक्षम नहीं होगा। स्कीमा माइग्रेशन, जो दक्षिण समर्थन करता है, आपको मौजूदा, आबादी वाले डेटाबेस को अपग्रेड करने में सक्षम बनाता है। स्वचालित करने से पहले हाथ से कर रहे हैं।
  • मुझे यह भी इंगित करना चाहिए कि ./manage.py whatever you like निष्पादित करने के लिए आप custom management commands लिख सकते हैं। इसमें उचित क्षमता है - मैंने प्रबंधन आदेशों को क्रॉन नौकरी में निष्पादित करने के आदेश के रूप में उपयोग किया है, उदाहरण के लिए।आप अपने आवेदन के व्यवस्थापक और निश्चित रूप से, तैनाती और परीक्षण के लिए इंटरैक्टिव कमांड भी बना सकते हैं।

इन्हें कैसे संभाला जाता है वास्तव में यह सुनिश्चित करता है कि आपके पास कौन सा सेटअप उपलब्ध है और आप कौन से टूल्स चुनते हैं।

संकलन पर: पाइथन के साथ निर्माण करने के लिए सबसे नज़दीक आपको फ्रीज, ए.के.ए. पीई 2 एक्सई या सीएक्सफ्रीज़ है जो बाइनरी उत्पन्न करता है। सावधान रहें, हालांकि ये सभी एक एक्सई में स्टोर पायथन बाइटकोड स्टोर करते हैं और इसे दुभाषिया के माध्यम से पास करते हैं, जो कि एक साझा वस्तु है। इसके अलावा, आप django ऐप को cxfreeze नहीं कर सकते हैं, क्योंकि django खुद को गतिशील आयात का उपयोग करता है जो रन टाइम पर होता है और इसलिए इसका मूल्यांकन cxfreeze द्वारा नहीं किया जा सकता है, जो अनिवार्य रूप से एक संकलन समय उपकरण है। तो एक कार्य के रूप में छूट निर्माण जो करने की जरूरत है। आप अपनी निर्देशिका में दिखाई देने वाली .pyc फ़ाइलों को देख सकते हैं - पाइथन आपके पाइथन स्क्रिप्ट को पायथन बाइटकोड में परिवर्तित करता है यदि अंतिम पीईसी के बाद से बदलाव किए गए हैं। यदि कोई बदलाव नहीं किया गया है, तो यह पिछली बार pyc फ़ाइल लोड करता है। पायथन बाइटकोड जो निष्पादित हो जाता है, इसलिए यह प्रदर्शन के संदर्भ में वास्तव में एक गति नहीं है, बस समय लोड करें।

+0

बिल्डआउट शानदार है। मुझे पूरा यकीन है कि यह वही है जो मैं ढूंढ रहा हूं। धन्यवाद! –

0

आप का प्रबंधन और अपने (Django) अजगर वातावरण पुन: पेश तो मैं buildout के लिए एक विकल्प के रूप में virtualenv साथ pip देखने की सलाह देते हैं करने के लिए कुछ की जरूरत है।

यह SaltyCrane article डीजेगो के साथ पीआईपी का उपयोग करने का वर्णन करता है। लेख उबंटू पर प्रक्रिया का वर्णन करता है लेकिन हम उबंटू और ओएसएक्स दोनों पर एक समान सेट अप का उपयोग करते हैं।

हमारे पास बिल्डआउट और पीआईपी दोनों के साथ अनुभव है और पाइप को आसान, अधिक भरोसेमंद और बिल्डआउट से स्केल करने में आसान पाया गया है।