在处理更大的项目时,我非常热衷于错误检测和处理。我正在使用用户可能安装或未安装的一些模块,因此我需要考虑这种可能性。
我想知道一种在尝试导入模块时检测哪些模块丢失的方法。目前,我有一组try / except块正在监视ImportErrors并将错误生成模块的名称附加到列表中。
当前代码:
errors = []
try:
import socket
except ImportError:
errors.append('socket')
pass
try:
import shutil
except ImportError:
errors.append('shutil')
try:
import urllib
except ImportError:
errors.append('urllib')
pass
if len(errors) > 0:
print colors.red + '[!] ' + colors.end + 'Error: The Following Module(s) Encountered Error(s): \n'
for i in range(len(errors)):
print '\t' + errors[i]
print colors.blue + '\n[*] ' + colors.end + 'Please Install/Reinstall the Listed Modules'
quit()
这种方法似乎工作正常,但我想要一种占用较少整体空间的方法。使用这种多次尝试/除块方法的主要原因是我需要检测哪个模块导入有问题。
答案 0 :(得分:0)
import importlib
moduleNames = ['socket', 'shutil', 'urllib']
missingModuleNames = []
for moduleName in moduleNames:
try:
importlib.import_module (moduleName)
except:
missingModuleNames.append (moduleName)
print (missingModuleNames)