अजगर-3.3 से पहले, मैं पाया है कि एक मॉड्यूल hasattr(mod, '__loader__')
के साथ एक कस्टम लोडर से लोड किया गया था। अजगर-3.3 के बाद, सभी मॉड्यूल एक कस्टम लोडर लोड करता है की परवाह किए बिना __loader__
विशेषता है।पायथन - आप कैसे पता लगाते हैं कि कस्टम लोडर द्वारा एक मॉड्यूल लोड किया गया है?
अजगर 2.7, 3.2:
>>> import xml
>>> hasattr(xml, '__loader__')
False
अजगर-3.3:
>>> import xml
>>> hasattr(xml, '__loader__')
True
>>> xml.__loader__
<_frozen_importlib.SourceFileLoader object at ...>
मैं पता कैसे लगाते हैं कि एक मॉड्यूल एक कस्टम लोडर से लोड किया गया था?
धन्यवाद। मेरे मामले में, मुझे पहले से CUSTOM_LOADERS सूची नहीं मिल सकती है। STANDARD_LOADERS बेहतर है, लेकिन मानक प्रक्रिया में तैयार करना थोड़ा मुश्किल है।
>>> import importlib._bootstrap >>> loader_classes = tuple(x[0] for x in importlib._bootstrap._get_supported_file_loaders()) >>> isinstance(os.__loader__, tuple(loader_classes)) True >>> isinstance(sys.__loader__, tuple(loader_classes)) False >>> sys.__loader__
–मुझे लगता है कि 'STANDARD_LOADERS = file_loaders + (BuiltinImporter + FrozenImporter + zipimporter)'। –