Python-3.3'ten önce, bir modülün hasattr(mod, '__loader__')
ile özel bir yükleyici tarafından yüklendiğini tespit ettim. Python-3.3'ten sonra, tüm modüller, özel bir yükleyici tarafından yüklenmeksizin __loader__
özniteliğine sahiptir.Python - Bir modülün özel yükleyici tarafından yüklendiğini nasıl anlarsınız?
Python 2.7, 3.2:
>>> import xml
>>> hasattr(xml, '__loader__')
False
Python 3.3:
>>> import xml
>>> hasattr(xml, '__loader__')
True
>>> xml.__loader__
<_frozen_importlib.SourceFileLoader object at ...>
nasıl bir modül özel bir yükleyici tarafından yüklenen olduğunu tespit ederiz?
Teşekkürler. Benim durumumda, CUSTOM_LOADERS listesini önceden alamıyorum. STANDARD_LOADERS daha iyidir, ancak standart prosedürde hazırlamak biraz zor.
>>> 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__
–Sanırım 'STANDARD_LOADERS = file_loaders + (BuiltinImporter + FrozenImporter + zipimporter)'. –