大規模なプロジェクトに取り組んでいるときは、エラーの検出と処理に非常に熱心です。ユーザーがインストールしたかどうかに関係なく、いくつかのモジュールを使用しているため、この可能性を考慮する必要があります。
それらをインポートしようとしているときに、どのモジュールが欠落しているかを検出する方法を知りたいです。現在、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()
この方法は問題なく機能しているように見えますが、全体的なスペースをあまり取らない方法が必要です。この複数試行/例外ブロック メソッドを使用する主な理由は、どのモジュールでインポートに問題があったかを検出する必要があるためです。