मैं how to check if a python module has been imported पढ़ रहा था और निर्देश स्पष्ट दिखते हैं, sys.modules
में मॉड्यूल की जांच करें। यह काम करता है जैसा कि मैंने पायथन 2 में अपेक्षित था, लेकिन पायथन 3 (3.5 और 3.6 परीक्षण) के साथ नहीं। उदाहरण के लिए:पाइथन 3 में 'sys.modules' में मॉड्यूल क्यों आयात नहीं किए गए हैं?
अजगर 3,6
>>> import sys
>>> 'itertools' in sys.modules
True
अजगर 2,7
>>> import sys
>>> 'itertools' in sys.modules
False
मैं ध्यान दें कि, itertools
अजगर 3 sys.modules dict
(<module 'itertools' (built-in)>
) में एक 'में निर्मित' के रूप में वर्णन किया गया है, और नहीं पाइथन 2 में शायद यही कारण है कि यह आयात होने से पहले sys.modules
में है, लेकिन यह not listed as a built-in है। वैसे भी, itertools
के बाद से अभी भी पायथन 3 में आयात करने की आवश्यकता है, मैं एक स्पष्टीकरण के लिए आभारी हूं।
यदि आपके द्वारा पहले से आयात किए गए किसी भी मॉड्यूल * को स्वयं के मॉड्यूल आयात करने की आवश्यकता है, तो उन मॉड्यूल लोड के रूप में दिखाए जाएंगे। शायद पाइथन 3 में एक निर्भरता पेश की गई थी जो पायथन 2 में मौजूद नहीं थी। पीएस यहां तक कि यदि कोई मॉड्यूल लोड हो गया है, तो आपको इसे मौजूदा दायरे में उपलब्ध कराने के लिए इसे 'आयात' करने की आवश्यकता है। –
मुझे लगता है कि आपने स्वयं से सवाल का जवाब दिया है: यदि 'itertools' एक बिल्टिन बन गया है, तो इसे दुभाषिया के स्टार्टअप पर ही लोड किया जाएगा। – ForceBru
सवाल यह है कि क्यों 'itertools' को आयात करने की आवश्यकता है या यह वहां क्यों है और दस्तावेज़ों में सूचीबद्ध नहीं है? –