我需要帮助才能在执行此操作时获取未导入模块的名称
所以代码是:
#!/usr/bin/env python
bla=[]
try:
import os
import sys
import somethings
import blabla
except:
bla.append(NOT_IMPORTED_MODULE_NAME) # it should be here
if len(bla)>0:
exit("not imported:%s" % " ".join(bla))
提前谢谢
答案 0 :(得分:2)
虽然我要说的更适合作为评论,但我只是在这里打字,因为由于声誉数量低而不允许发表评论。 (因为我在这里很新)
假设您缺少sys和blabla模块。使用当前设置,它会在尝试加载sys时抛出异常。它甚至不会达到int main(){
char *input;
scanf("%s",input);
mysql_quer(con,"select * from < tablename > where < column > = input ");
}
。因此,如果缺少先前的模块,您将不知道模块是否丢失。如果你真的想要你想要的功能,你可以用每个import blabla
包装所有模块导入的异常处理。但在我看来,这是过度杀戮。正如idjaw所提到的,你应该能够从stacktrace中看到是否缺少任何模块。
答案 1 :(得分:0)
#!/usr/bin/env python
import sys
import os
from importlib import import_module
bla = []
for modulename in ('something', 'blabla'):
try:
import_module(modulename)
except ImportError as exc:
bla.append(str(exc))
if bla:
sys.stderr.write('\n'.join(bla))
sys.stderr.write('\n')
sys.exit(1)