2011-03-19 17 views
92

मैं अपने खाली समय में एक फुजी-टिपिंग प्रतियोगिता के लिए एक django एप्लिकेशन लिख रहा हूं जो हम काम पर चल रहे हैं। मैंने सोचा कि मैं इस समय बुद्धिमानी से उपयोग करूंगा, और वर्चुअलएन्व, पीआईपी, पैकेजिंग, डीजेंगो 1.3, और आसानी से पुनर्वितरण योग्य एप्लिकेशन को कैसे लिखूं। अब तक सब ठीक है.इसे पाइप-इंस्टॉल करने योग्य बनाने के लिए मैं एक पायथन एप्लिकेशन कैसे पैकेज करूं?

मैं पैकेजिंग भाग पर हूं। उदाहरण के लिए गिटहब पर बहुत सारे django ऐप्स अधिकतर बंडल (लगभग) उसी तरह से बंडल किए जाते हैं। मैं उदाहरण के रूप में django-uni-forms का उपयोग करूंगा।

एक धारणा जो मैं कर रहा हूं वह यह है कि MANIFEST.in और setup.py केवल आवश्यक टुकड़े हैं जिन्हें पीआईपी को अपना काम करने की आवश्यकता होती है। क्या वो सही है? अगर मेरी धारणा गलत है तो अन्य घटक क्या आवश्यक हैं?

क्या आवश्यक पैकेजिंग फ़ाइलें आम तौर पर उत्पन्न होती हैं, या वे हाथ से तैयार की जाती हैं? निर्भरता का वर्णन किया जा सकता है और फिर भी स्थापित किया जा सकता है? मेरा आवेदन django-uni-forms पर निर्भर करता है, और मैंने इसे अपने ऐप के भीतर requirements.txt फ़ाइल में सूचीबद्ध किया है जिसे मैं निर्भरता स्थापित करता था; लेकिन क्या ऐसा कुछ है जो पैकेजिंग सिस्टम का ख्याल रख सकता है?

मेरे आवेदन को पैकेज करने के लिए मुझे किन कदमों का पालन करने की आवश्यकता है ताकि पीआईपी इसे स्थापित करने में सक्षम हो और किसी भी निर्भरता?

उत्तर

87

हां, MANIFEST.in और setup.py पर्याप्त होना चाहिए।

इस ब्लॉग पोस्ट वास्तव में इस विषय पर कुछ अच्छी जानकारी है: Packaging a Django reusable app

और यहाँ एक और अच्छा, विस्तृत अवलोकन है कि मुझे एक बहुत मदद की है: Python Packaging User Guide

विशेष रूप से सुझाव दिए गए अपने स्टैटिक फ़ाइलें प्राप्त करने के लिए (टेम्पलेट्स) शामिल हैं क्योंकि यह पहले स्पष्ट नहीं हो सकता है।

और हां, आप अपने setup.py में आवश्यक पैकेज निर्दिष्ट कर सकते हैं जो आपके ऐप को इंस्टॉल करते समय स्वचालित रूप से लाए जाते हैं।

उदाहरण के लिए:

install_requires = [ 
     'django-profiles', 
     'django-uni-forms', 
    ], 

जाहिर है अब हम दो स्थानों पर जहां निर्भरता परिभाषित कर रहे हैं है, लेकिन जरूरी नहीं कि है कि इन जानकारी को दोहराया गया है: setup.py vs requirements.txt

इस सेटअप अपने पैकेज होना चाहिए के साथ

pip के माध्यम से स्थापित करने योग्य।


पियरे के रूप में टिप्पणी में बताया गया है, अब भी Django के आधिकारिक दस्तावेज में एक प्रासंगिक अनुभाग है: Packaging your app

और फिर इस "पूरी तरह से अधूरा" गाइड, जो वास्तव में और पैकेजिंग पर एक महान सिंहावलोकन देता है पीईपीआई को पैकेज अपलोड करना: Sharing Your Labor of Love: PyPI Quick And Dirty

+4

इसके अलावा अब एक हिस्सा है [एक Django ऐप कैसे पैकेज करें] (https://docs.djangoproject.com/en/dev/intro/reusable-apps/#packaging-your -एप) आधिकारिक दस्तावेज़ों में –

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