如何检查代码中某处是否导入了模块?
if not has_imported("sys"):
print 'you have not imported sys'
我想检查我是否已导入模块的原因是因为我有一个我不想导入的模块,因为有时它会弄乱我的程序。
答案 0 :(得分:69)
在sys.modules
dictionary中测试模块名称:
import sys
modulename = 'datetime'
if modulename not in sys.modules:
print 'You have not imported the {} module'.format(modulename)
来自文件:
这是一个将模块名称映射到已加载的模块的字典。
答案 1 :(得分:15)
使用sys.modules测试是否已导入模块(我使用unicodedata作为示例):
>>> import sys
>>> 'unicodedata' in sys.modules
False
>>> import unicodedata
>>> 'unicodedata' in sys.modules
True
答案 2 :(得分:11)
对于接受的sys.modules答案,我要添加一个警告,注意在导入时重命名模块:
>>> import sys
>>> import datetime as dt
>>> 'dt' in sys.modules
False
>>> 'datetime' in sys.modules
True
答案 3 :(得分:3)
sys.modules
包含解释器当前实例中任何地方使用的所有模块,因此如果导入到任何其他Python模块中就会显示出来。
dir()
检查名称是否在当前名称空间中定义。
2的组合比每个单独的组合更安全,并且只要您自己没有定义copy
即可使用。
if ('copy' in sys.modules) and ('copy' in dir()):
答案 4 :(得分:-1)
if "sys" not in dir():
print("sys not imported!")