2008-11-02 14 views
68

क्या कोई यह समझा सकता है कि अंडा-जानकारी निर्देशिका उनके संबंधित मॉड्यूल से कैसे बंधी जाती है? उदाहरण के लिए, मैं निम्नलिखित है:पायथन पैकेज और अंडे-जानकारी निर्देशिका

/usr/local/lib/python2.5/site-packages/quodlibet/ 
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/ 

मैं, सही मानते हुए कर रहा हूँ अंडे की जानकारी निर्देशिका setuptools (easy_install) करने के लिए इसी मॉड्यूल दृश्यमान बनाने के लिए है? यदि हां, तो सेटअपtools मॉड्यूल निर्देशिका में अंडे-जानकारी निर्देशिका को कैसे बांधता है?

मान लीजिए कि मैं सही रास्ते पर हूं, और उदाहरण के लिए ... अगर मैं सेटअप के लिए दृश्यमान का एक मौजूदा पैकेज बनाना चाहता हूं, तो क्या मैं मॉड्यूल निर्देशिका और अंडे-जानकारी निर्देशिका को सिम्लिंक कर सकता हूं साइट-पैकेज निर्देशिका में? मैंने अभी यह कोशिश की होगी, लेकिन मुझे यकीन नहीं है कि पैकेज सेटअप सेटअप के लिए दृश्यमान है या नहीं। बोनस पॉइंट्स यदि आप मुझे यह भी बता सकते हैं कि इसका परीक्षण कैसे करें :)

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

+0

क्या आपके पास अभी भी कहीं भी लयथन के लिए एक क्वाडलिबेट प्लगइन है? यह वास्तव में अच्छा लगता है। –

+0

@ पीटर टर्नर शायद यह क्वाडलिबेट है - [यह पायथन में लिखा गया है] (https://github.com/quodlibet/quodlibet) –

उत्तर

62

.gg-info निर्देशिका केवल तभी बनाई जाती है जब अंडे को स्थापित करने के लिए -single-version-externally-प्रबंधित किया गया था। "आम तौर पर", एक अंडे स्थापित करना एक एकल निर्देशिका (या ज़िप फ़ाइल) बनाता है, जिसमें कोड और मेटाडेटा दोनों होते हैं।

pkg_resources (जो मेटाडेटा पढ़ने वाली लाइब्रेरी है) में एक फ़ंक्शन require है जिसका उपयोग पैकेज के विशिष्ट संस्करण का अनुरोध करने के लिए किया जा सकता है। "पुरानी शैली" के लिए, नियमित आयात, easy_install sys.path पर अंडे निर्देशिका प्राप्त करने के लिए एक .pth फ़ाइल हैक करता है। - सिंगल-वर्जन-बाहरी-प्रबंधित के लिए, यह हैकिंग आवश्यक नहीं है, क्योंकि केवल एक ही संस्करण स्थापित होगा (सिस्टम के पॅककिंग इंफ्रास्ट्रक्चर द्वारा, उदाहरण के लिए आरपीएम या डीपीकेजी)। require (या किसी अन्य pkg_resources बाध्यकारी तंत्र) का उपयोग करने वाले अनुप्रयोगों के लिए अंडे की जानकारी अभी भी शामिल है।

यदि आप हार्ड-लिंकिंग द्वारा पैकेज स्थापित करना चाहते हैं, तो मैं "setup.py विकसित" का उपयोग करने की अनुशंसा करता हूं। यह setuptools से एक कमांड है जो वास्तव में अंडे स्थापित नहीं करता है, लेकिन यह साइट-व्यापी उपलब्ध कराता है। ऐसा करने के लिए, यह एक अंडे-लिंक फ़ाइल बनाता है ताकि pkg_resources इसे पा सकें, और यह एक .pth फ़ाइल में हेरफेर करता है, ताकि नियमित आयात इसे ढूंढ सके।

+22

'setup.py develop' के प्रभावों को दूर करने के लिए, 'setup.py develop -u' का उपयोग करें – codewarrior

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