Ncoghlan के बगल में मैं पायथन की आयात प्रणाली का दूसरा अनुरक्षक हूं और इसके वर्तमान कार्यान्वयन के लेखक, importlib (http://docs.python.org/dev/py3k/library/importlib.html) हूं। सब कुछ निक ने कहा कि मैं इससे सहमत हूं, इसलिए मैं केवल कुछ अतिरिक्त जानकारी जोड़ना चाहता हूं।
सबसे पहले, PEP 302 पर सीधे निर्भर न रहें, बल्कि यह देखें कि एब्सट्रैक्ट बेस क्लासेस आदि के मामले में importlib क्या प्रदान करता है। बैकवर्ड-कम्पैटिबिलिटी के लिए पीईपी 302 के साथ संगत होना चाहिए, लेकिन मुझे अपने कुछ को जोड़ना था असली लचीलेपन के लिए समर्थन को समाप्त करने के लिए स्वयं के एपीआई।
एक और महत्वपूर्ण बिंदु यह है कि आप डेवलपर्स को लचीलेपन के दो टुकड़े दे रहे हैं। एक फाइल सिस्टम पर सीधे व्यक्तिगत फ़ाइलों के रूप में (मैं इसे स्टोरेज बैक-एंड इंपोर्ट के रूप में कहता हूं ) के अलावा एक तरह से कोड स्टोर करने की क्षमता है , उदाहरण के लिए यह कोड को ज़िप फाइल, साइक्लाइट डेटाबेस, आदि में रहने की अनुमति देता है। । दूसरा समर्थन किसी तरह से प्री-या पोस्ट-प्रोसेस कोड को नियंत्रित करने की अनुमति देने में है, जैसे कि Quixote (https://www.mems-exchange.org/software/quixote/) और स्ट्रिंग लिटरल्स का इसका वैकल्पिक उपयोग जिसे असाइन नहीं किया गया है एक चर समर्थन करने के लिए बहुत आसान होगा।
जबकि बाद की शायद ही कभी आवश्यकता होती है, पूर्व वह है जहां आपको समर्थन के बारे में चिंता करनी होगी। और यह वह जगह है जहाँ आप फ़ाइल सिस्टम इंटरैक्शन API को व्यावहारिक रूप से पुनर्परिभाषित करते हैं। चूंकि कुछ लोगों को अपने कोड के साथ फ़ाइलों के रूप में संग्रहीत संपत्ति की आवश्यकता होती है, इसलिए आपको फ़ाइलों को पढ़ने, फ़ाइलों की खोज करने आदि के लिए एक अच्छा तरीका प्रदान करने की आवश्यकता है। हमें अभी भी एपीआई के हिस्से को लागू करने की आवश्यकता है ताकि पता लगाया जा सके कि डेटा फाइलें क्या हैं, उन्हें सूचीबद्ध करना, आदि। ।
लेकिन फिर आपको एपीआई की भी आवश्यकता है जो कोड-विशिष्ट हैं। जैसा कि निक ने उल्लेख किया है, आपको यह पता लगाने पर एपीआई की जरूरत है कि पैकेज में क्या मॉड्यूल शामिल हैं, आदि जो फ़ाइल-विशिष्ट नहीं हैं। मॉड्यूल से निपटने के लिए एपीआई के पास यह विषम द्वंद्व है जहां आपने फ़ाइलों की अवधारणा को हटा दिया है, लेकिन फिर आपको फ़ाइल-जैसी संपत्ति डेटा तक पहुंचने के लिए एपीआई प्रदान करने की आवश्यकता है। और जैसे ही आप डुप्लिकेट से बचने के लिए दूसरे के संबंध में एक को लागू करने की कोशिश करते हैं, पानी वास्तव में मृदु हो जाता है (यानी लोग अंतिम फ़ाइल पथ संरचना पर निर्भर होते हैं, आदि) इस तथ्य पर ध्यान दिए बिना कि पथ एक सच्चा मार्ग नहीं हो सकता है। क्योंकि यह ज़िप युक्त कोड के लिए है, न कि केवल एक फ़ाइल के लिए)। IOW आप दो समान एपीआई लागू करने के लिए समाप्त हो जाएंगे, लेकिन लंबे समय में आप इसके लिए बेहतर होंगे।
जैसा कि निक ने कहा, हमारा समाधान एक अच्छा शुरुआती बिंदु है, लेकिन यह नहीं है कि मैं आज यह कैसे करूं अगर मैं एपीआई को खरोंच से डिजाइन कर रहा था।