2010-05-09 15 views
21

मैं कुछ पायथन पैकेज बनाए रखता हूं। मेरे पास उनमें से प्रत्येक के लिए बहुत ही setup.py फ़ाइल है। हालांकि, setup.py install करते समय, मेरे पैकेजों में से एक अंडे के रूप में स्थापित हो जाता है, जबकि अन्य "अंडा फ़ोल्डर्स" के रूप में स्थापित होते हैं, यानी "अंडे" के विस्तार के साथ फ़ोल्डर्स।पायथन: कुछ पैकेज अंडे के रूप में क्यों स्थापित होते हैं और कुछ "अंडा फ़ोल्डर्स" के रूप में क्यों स्थापित होते हैं?

उनके बीच क्या अंतर है जो इस अलग व्यवहार का कारण बनता है?

+0

(मैं विंडोज एक्सपी पर हूं।) –

उत्तर

22

:

तो zip-safe मौजूद है, तो इसका मतलब है कि इस परियोजना को ठीक से जब एक .egg zipfile के रूप में स्थापित काम करेंगे, और इसके विपरीत not-zip-safe के अस्तित्व का मतलब है परियोजना एक .egg फ़ाइल के रूप में [अर्थात स्थापित नहीं किया जाना चाहिए । .egg निर्देशिका के रूप में]। zip_safe सेटअपtools 'setup() विकल्प यह निर्धारित करता है कि कौन सी फ़ाइल लिखी जाएगी। यदि विकल्प प्रदान नहीं किया गया है, तो सेटअपटॉल्स कोड और सामग्री विश्लेषण के आधार पर पैकेज का काम कर सकता है या नहीं, इसका अपना आकलन करने का प्रयास करता है।

+7

कोई परियोजना ज़िप-सुरक्षित बनाता है? आप एक या दूसरे क्यों चुनेंगे? (मैं किसी प्रोजेक्ट को पैकेजिंग करने के रूप में पूछता हूं।) –

+2

setuptools प्रलेखन से: http://peak.telecommunity.com/DevCenter/setuptools#setting-the-zip-safe-flag – saffsd

4

वास्तव में एक एकल अंडा फ़ाइल एक विशेष निर्देशिका संरचना के साथ एक ज़िप संग्रह है। zipimport दस्तावेज के अनुसार, केवल .py, .pyc, और .pyo फ़ाइलों को ज़िप फ़ाइलों से आयात किया जा सकता है। इसलिए, यदि पैकेज को अन्य प्रकार के मॉड्यूल संसाधन आयात करने की आवश्यकता है (जैसे संकलित सी कोड; .so फ़ाइलें, .pyd फाइलें) यह ज़िप फ़ाइल के रूप में काम नहीं करेगी।

मुझे नहीं पता कि यह केवल है क्योंकि कुछ अंडे ज़िप अभिलेखागार के रूप में काम नहीं करेंगे, लेकिन मुझे लगता है कि यह मुख्य कारण है।

+0

यह मुख्य कारण नहीं है। यह एक * सही * कारण भी नहीं है। setuptools एक लोडेड अंडे के साथ भी काम करता है .so और .pyd फ़ाइलों को बनाने के लिए विशेष लोडर जोड़ता है। दूसरा जवाब सही है। –