sys.modulesSözlükteki modül adını test edin :
import sys
modulename = 'datetime'
if modulename not in sys.modules:
print 'You have not imported the {} module'.format(modulename)
Dokümantasyondan:
Bu, modül adlarını önceden yüklenmiş modüllerle eşleyen bir sözlüktür.
Bir importifadenin iki şey yaptığını unutmayın:
- modül daha önce hiç içe aktarılmamışsa (== içinde mevcut değilse
sys.modules), yüklenir ve öğesine eklenir sys.modules.
- Modül nesnesine veya modül ad alanının üyeleri olan nesnelere başvuran geçerli ad alanındaki 1 veya daha fazla adı bağlayın.
İfade modulename not in sys.modules, 1. adımın gerçekleşip gerçekleşmediğini test eder. 2. adımın sonucunun test edilmesi, importfarklı nesnelere başvurmak için farklı adlar belirlediklerinden tam olarak hangi ifadenin kullanıldığını bilmeyi gerektirir :
import modulename setleri modulename = sys.modules['modulename']
import packagename.nestedmodulesetler packagename = sys.modules['packagename'](kaç tane ek seviye eklerseniz ekleyin)
import modulename as altname setleri altname = sys.module['modulename']
import packagename.nestedmodule as altname setleri altname = sys.modules['packagename.nestedmodule']
from somemodule import objectname setleri objectname = sys.modules['somemodule'].objectname
from packagename import nestedmodulenamesetleri nestedmodulename = sys.modules['packagename.nestedmodulename'](adında hiçbir nesne yoktu sadece nestedmodulenameiçinde packagenamebu aktarmadan önce ad, iç içe modül için ilave bir isim bu noktada ana paket ad alanına eklenir)
from somemodule import objectname as altname setleri altname = sys.modules['somemodule'].objectname
from packagename import nestedmodulename as altnamesetleri altname = sys.modules['packagename.nestedmodulename'](adında hiçbir nesne yoktu sadece nestedmodulenameiçinde packagenamebu aktarmadan önce ad, iç içe modül için ilave bir isim bu noktada ana paket ad alanına eklenir)
İçe aktarılan nesnenin bağlı olduğu adın belirli bir ad alanında olup olmadığını test edebilirsiniz:
'importedname' in dir()
'importedname' in globals()
'importedname' in globals(sys.modules['somemodule'])
Bu, o modülden belirli bir modüle veya nesneye atıfta bulunup bulunmadığını size yalnızca adın var olduğunu (bağlı olduğunu) söyler. sys.modulesAdın o zamandan beri tamamen başka bir şeye ayarlandığını göz ardı etmeniz gerekiyorsa, o nesneyi daha ayrıntılı olarak inceleyebilir veya içinde mevcut olanla aynı nesne olup olmadığını test edebilirsiniz .
raise SystemError()İçe aktarmak istemediğiniz modülün üstüne (veya seçtiğiniz başka bir istisna) koyun . Eğer varsa do aslında bir yerde içe, programınız bir Traceback ve çıkış fırlatır.