2012-06-11 18 views
8

मैं पैकेजिंग पायथन अनुप्रयोगों की दुनिया में डाइविंग कर रहा हूं और भ्रम की इस स्थिति में प्रवेश करने में कामयाब रहा हूं जहां सभी अवधारणाओं और विकल्पों के कारण मेरा सिर घूमना शुरू हो गया है।distutils, distutils2, पीआईपी और आवश्यकताओं

प्रश्न:

मेरा लक्ष्य क्या है की जरूरत है? एक गिट सर्वर पर स्थित स्रोत से मेरी पायथन परियोजना को तैनात करें। तैनाती उपकरण को सभी निर्भरताओं को प्राप्त और स्थापित करना चाहिए, जिनमें से अधिकांश पीआईपी के माध्यम से उपलब्ध हैं और किसी को गिट के माध्यम से लाने और स्थापित करने की आवश्यकता है। अंतिम परिणाम पिप के माध्यम से स्थापित करने योग्य होना चाहिए, तो मैं के रूप में कुछ कर सकते हैं:

[~] git clone git://some/path/project.git 
[~] pip install project/ 

प्रसंग: वर्तमान में मैं Distutils2 मैं क्या चाहते हो पाने के लिए कोशिश कर रहा हूँ, लेकिन यह है कि setup.py का उपयोग करके बनाया लगता है 'जेनरेट-सेटअप' कमांड पिप के साथ नहीं खेलता है।

मैं Distutils2 का उपयोग करना चाहता था क्योंकि यह सभी का सबसे भविष्य प्रमाण है। लेकिन सभी उपकरणों पर विभिन्न दस्तावेज सिर्फ भयानक (पुरानी और गलत जानकारी के साथ मिश्रित सटीक जानकारी) इस तरह से एक लड़का अपनी स्वच्छता पर सवाल उठाता है।

तो मुझे क्या करना चाहिए? Distutils और setup.py के लिए चिपकाओ? या क्या मुझे बिल्डआउट की पसंद को देखने की ज़रूरत है?

क्या उत्तरदाता कृपया यह बताएगा कि मुझे विशेष उपकरण के साथ क्या करना है (उदाहरण: Distutils2 का उपयोग करके अपना कोड तैनात करें, पीआईपी का उपयोग करके निर्भरता स्थापित करें, गिट निर्भरताओं के लिए एक स्क्रिप्ट लिखें और XYZ कर एक साथ सब कुछ गोंद लिखें)।

संपादित करें: मैं Distutils2 1.0a4 का उपयोग कर रहा हूं, जो दस्तावेज़ों के साथ असंगत लगता है।

संपादित 2: यह प्रश्न स्पष्ट करने के लिए प्रश्न को दोबारा सुधारने के लिए कि मेरा प्रश्न वास्तव में क्या है।

संपादित 3: यह पायथन के पैकेजिंग और वितरण टूलचेन को तोड़ने का मेरा चौथा प्रयास है। मैं अन्य लोगों को मेरे लिए अपना काम करने की कोशिश नहीं कर रहा हूं, हालांकि एक रूकी के लिए यह करना बहुत असंभव है कि एक विशेष उपकरण क्या करना है, जहां यह शुरू होता है और दूसरा सिरा होता है। विशेष रूप से उपकरण के बीच कार्यात्मक ओवरलैप की वजह से। मैं ऋषिओं द्वारा घिरा सिलिकॉन वैली में स्थित नहीं हूं जो मुझे रहस्यों में शुरू कर सकता है और सार्वजनिक रूप से उपलब्ध दस्तावेज का कोई उपयोग नहीं है।

अंतिम संपादन: हालांकि मैं वास्तव में इस प्रश्न को शुरू करते समय Buildout के साथ वर्चुअलएन्व को बदलने के बारे में सोच नहीं रहा था। लेकिन मेरे शोध करते समय मुझे कुछ एहसास हुआ जो मुझे हमेशा पता था, लेकिन कुल स्पष्टता में मेरे पास नहीं आया था। पाइथन पैकेजिंग और तैनाती स्वचालन के बारे में कई तरीके हैं। ऐसे कई टूल भी हैं जो आपको सामान प्राप्त करने में मदद कर सकते हैं। हालांकि, उपकरण के बीच महत्वपूर्ण कार्यात्मक ओवरलैप होने पर, टूलचेन कभी विकसित हो रहा है और इस प्रकार अब तक कोई स्पष्ट "मानक सर्वोत्तम अभ्यास" नहीं है। वितरण टूलचेन हथियार दौड़ अभी भी पूरी गर्मी में है और अभी तक कोई स्पष्ट विजेता उभरा नहीं है। यह हमें नोबस के लिए भ्रमित कर सकता है, जो उम्मीद करते हैं कि पाइथन में अधिकांश चीजें बस काम करती हैं। मैं इसके बाद क्या था (बिल्डआउट फैशन में distutils/setuptools + pip + virtualenv या Buildout के साथ अर्ध एकीकृत भी) निश्चित रूप से काम करने योग्य है, लेकिन यह बहुत अधिक समझ में नहीं आता है, क्योंकि यह संभव नहीं है - लेकिन क्योंकि कोई भी ऐसा नहीं करता है। यदि आपको इस स्तर के परिष्कार की आवश्यकता है, तो आपको प्रतिबद्ध करने की आवश्यकता है। व्यक्तिगत रूप से मैंने वर्चुअलएव को पीछे छोड़ने का फैसला किया है (इस परियोजना के लिए) और बिल्डआउट को गले लगाओ।

उत्तर

7

buildout पर एक नज़र डालें; एक बिल्डआउट प्लगइन के साथ mr.developer कहा जाता है, आप एक तैनाती प्रणाली को एक साथ रख सकते हैं जो आप पूछेंगे।

वेब पर buildout विन्यास के उदाहरण और प्रस्तुतियों के बहुत सारे हैं, यहाँ कुछ पाने के लिए आप शुरू कर रहे हैं: http://www.slideshare.net/djay/buildout-how-to-maintain-big-app-stacks-without-losing-your-mind

की एक यूट्यूब वीडियो में शामिल हैं:

  • buildout पर एक introductionairy प्रस्तुति प्रस्तुति, तो आप साथ सुन सकते हैं।

  • how to use buildout to develop a Django application पर उत्कृष्ट ब्लॉग पोस्ट।

    बिल्डआउट और setup.py interplay के बारे में विवरण शामिल है।

  • विन्यास planet.plone.org के लिए: https://github.com/plone/planet.plone.org/blob/master/buildout.cfg

    यह विन्यास, शैली, अपाचे config और cronjobs के साथ एक venus RSS aggregator बनाता है, के रूप में की जरूरत है अंडे में खींच रहा है।

  • Plone कोर विकास buildout: https://github.com/plone/buildout.coredev

    परिसर buildout कि सभी प्लोन सीएमएस को विकसित करने के लिए आवश्यक स्रोतों में खींचती है; यह एक जटिल जानवर है लेकिन यह दिखाता है कि आप mr.developer के साथ क्या कर सकते हैं।

+0

भले ही यह वास्तव में नहीं था जो मैं खोज रहा था, लिंक के आपके संग्रह ने आखिरकार बिल्डआउट के बारे में अपने सिर में खाली आवाजों को साफ़ करने में चाल बनाई। धन्यवाद। – JanezStupar

1

यह मुश्किल होने की जरूरत नहीं है: Jenkins स्थापित करने और संकुल कि अपनी परियोजना की जरूरत है परिभाषित करने के लिए पिप के requirements.txt files का उपयोग करें। उसके बाद आप आवश्यक कार्यों को स्थापित करने सहित विभिन्न कार्यों को करने के लिए जेनकींस में एक बिल्ड को कॉन्फ़िगर कर सकते हैं। यह आपके भंडार से स्रोत कोड प्राप्त कर सकता है और + पूरे प्रोजेक्ट को स्थापित कर सकता है।

+0

तथ्य यह है कि जेनकिन्स एक परियोजना स्थापित कर सकते हैं, यह अपने लक्ष्य के लिए एक आवश्यकता है: निरंतर एकीकरण परीक्षण प्रदान करना। लेकिन तैनाती कार्यों के लिए जेनकींस का उपयोग करने के लिए भारी मात्रा में ओवरकिल है! बेहतर उपकरण उपलब्ध होने पर यह एक बहुत भारी पैकेज है! –

+0

[कपड़े] (http://fabfile.org) परिनियोजन के लिए इस्तेमाल किया जा सकता है – jfs