2

大規模なプロジェクトに取り組んでいるときは、エラーの検出と処理に非常に熱心です。ユーザーがインストールしたかどうかに関係なく、いくつかのモジュールを使用しているため、この可能性を考慮する必要があります。

それらをインポートしようとしているときに、どのモジュールが欠落しているかを検出する方法を知りたいです。現在、ImportErrors を監視し、エラーを生成するモジュールの名前をリストに追加する一連の try/except ブロックがあります。

現在のコード:

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()

この方法は問題なく機能しているように見えますが、全体的なスペースをあまり取らない方法が必要です。この複数試行/例外ブロック メソッドを使用する主な理由は、どのモジュールでインポートに問題があったかを検出する必要があるためです。

4

1 に答える 1

0
import importlib

moduleNames = ['socket', 'shutil', 'urllib']

missingModuleNames = []

for moduleName in moduleNames:
    try:
        importlib.import_module (moduleName)
    except:
        missingModuleNames.append (moduleName)

print (missingModuleNames)
于 2016-04-18T17:52:18.170 に答える