पायथन पैकेज और अंडा-जानकारी निर्देशिका


80

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

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

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

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

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


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

जवाबों:


71

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

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

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


27
के प्रभावों को उलटने के लिए setup.py develop, उपयोग करेंsetup.py develop -u
कोडवर्ड

ध्यान दें, यह एक निचला मामला है -u। ऊपरी मामला -Uकुछ और करता है।
CGFoX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.