2015-07-14 12 views
18

अंडों पर पहियों का लाभ स्पष्ट है (अनुभाग देखें क्यों अंडा नहीं? https://pypi.python.org/pypi/wheel)।पायथन पैकेजिंग: पहियों बनाम टैरबॉल (tar.gz)

हालांकि, यह पूरी तरह से स्पष्ट नहीं है कि tar.gz पर पहियों का उपयोग करने का क्या फायदा है। मुझे कुछ स्पष्ट याद आ रहा है जैसे "वे वही हैं"। जैसा कि मैंने इसे देखा है, दोनों को सीधे pip (यहां तक ​​कि विंडोज़ में) का उपयोग करके स्थापित किया जा सकता है, समान आकार और पैकेजिंग के समान प्रयास की आवश्यकता होती है। यह मुझे लगता है कि एक पैकेजिंग पद्धति को न्यायसंगत बनाते समय आपको किस तरह के प्रश्न मिल सकते हैं।

संपादित करें: बस एक उदाहरण मिला जहां tar.gz पहियों से बेहतर हो सकता है। चेरीपी (https://pypi.python.org/pypi/CherryPy) केवल पायथन 3.x के लिए पहियों प्रदान करता है, इसलिए यदि आप पाइथन 2.7 और 3.x निर्भरताओं के लिए चेरीपी की सेवा करने के लिए स्थानीय भंडार चाहते हैं, तो ऐसा लगता है कि यह टैरबॉल को स्टोर करने के लिए और अधिक समझ में आता है। क्या ये सही है?

उत्तर

6

यह मेरे लिए यह जवाब (पहिया पीईपी से सीधे):

अजगर एक पैकेज स्वरूप sdist से स्थापित करने के लिए आसान है कि जरूरत है। पायथन के एसडीआईस्ट पैकेजों को डिस्ट्यूटल्स और सेटअपटॉल्स बिल्ड सिस्टम की आवश्यकता होती है, बनाने के लिए मनमाने ढंग से कोड चलाने और पुन: संकलित करने के लिए, कोड को फिर से संकलित करें, इसलिए इसे एक नए वर्चुअलएन्व में स्थापित किया जा सकता है। बिल्ड-इंस्टाल को कॉन्फ़्लेट करने की यह प्रणाली धीमी है, को कड़ी मेहनत करना, और दोनों बिल्ड सिस्टम और इंस्टॉलर्स में नवाचार में बाधा डालती है।

व्हील बिल्ड सिस्टम और इंस्टॉलर के बीच एक सरल इंटरफ़ेस प्रदान करके इन समस्याओं का समाधान करने का प्रयास करता है। व्हील बाइनरी पैकेज प्रारूप संस्थापकों को सिस्टम बनाने के बारे में जानने से मुक्त करता है, कई इंस्टॉलेशन, पर संकलन समय को amortizing द्वारा समय बचाता है और लक्ष्य वातावरण में एक बिल्ड सिस्टम स्थापित करने की आवश्यकता को हटा देता है।

https://www.python.org/dev/peps/pep-0427/#rationale

नोट tarballs हम की बात कर रहे ऊपर "sdists" भी कहा जाता है क्या कर रहे हैं।

1

(बस "मामले के आधार पर" चर्चा करने के लिए औचित्य के एक जोड़े को जोड़ने के लिए) शुद्ध अजगर और देशी सी एक्सटेंशन पैकेज के लिए तेजी से स्थापना • से Python Wheels

पहियों

के लाभ।
• स्थापना के लिए मनमाने ढंग से कोड निष्पादन से बचें। (Setup.py से बचें)
• सी एक्सटेंशन की स्थापना के लिए विंडोज या ओएस एक्स पर एक कंपाइलर की आवश्यकता नहीं है।
• परीक्षण और निरंतर एकीकरण के लिए बेहतर कैशिंग की अनुमति देता है।
• इंस्टॉलेशन के हिस्से के रूप में .pyc फ़ाइलों को बनाता है ताकि यह सुनिश्चित किया जा सके कि वे इस्तेमाल किए गए पायथन दुभाषिया से मेल खाते हैं।
• प्लेटफॉर्म और मशीनों में अधिक सुसंगत इंस्टॉल।

सुनिश्चित करें कि पहिया स्थापित है।

pip install wheel 
+0

क्या वे सभी बिंदुएं हैं जो टैरबॉल नहीं कर सकती हैं? (मैं आसानी से कह सकता हूं कि आपको लिनक्स मशीन में पहियों के लिए "अतिरिक्त" सॉफ़्टवेयर की आवश्यकता है जबकि टैरबॉल उदाहरण के लिए नहीं होगा) –

+0

मुझे हमेशा यह नहीं पता कि संग्रह को खोलकर, टैरिबॉल में क्या है, मैं उसी डिग्री तक, पता है कि एक .whl फ़ाइल में क्या है जो "बस काम" करने वाला है, और यह मेरे लिए एक बड़ा फायदा है जब पीआईपी का उपयोग करते हैं जो अक्सर "काम नहीं करता"। – karel

+1

क्या आप उस बिंदु पर थोड़ा गहराई से जा सकते हैं? जैसा कि मैंने इसे देखा, जब मैं एक व्हील और टैरबॉल देखता हूं, तो दोनों में पैकेजिंग के लिए पैकेज और कुछ अतिरिक्त जादू है। यहां तक ​​कि मैं कह सकता हूं कि टैरबॉल में मैं वहां पर लाइसेंस देख सकता हूं, जबकि मुझे इसे पहिया में नहीं मिल रहा है (वाणिज्यिक सॉफ्टर करते समय काफी महत्वपूर्ण बिंदु)। दोनों अवांछित कुछ छुपा सकते हैं, यही कारण है कि मुझे "बस काम" नहीं मिलता है। (बीटीडब्ल्यू, मुझे पहियों पसंद हैं लेकिन मुझे ठोस औचित्य की आवश्यकता है) –

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