ImportErrorの「モジュールが例外を投げた」から、私は「モジュールが見つかりません」どのように区別するのですか?
-
13-09-2019 - |
質問
Pythonでは、import does_not_exist
はImportError
を上昇させ、そして
import exists
exists.py
ます:
import does_not_exist
またImportError
を発生させます。
どのように私は、コードの違いを教えてください?
解決
私が知っている唯一の方法は、トップレベルのモジュール名が「存在する」例外のメッセージかであるかどうかを確認することです
try:
import exists
except ImportError as exc:
if "exists" in str(exc):
pass
else:
raise
これはPythonのはImportErrorための機能要求だろうか?モジュール名の変数を持つことは確かに便利である..
他のヒント
あなたはトレースバックのtb_nextを使用することができます。例外は、別のモジュールで発生した場合は該当なしとは異なります。
import sys
try:
import exists
except Exception, e:
print "None on exists", sys.exc_info()[2].tb_next == None
try:
import notexists
except Exception, e:
print "None on notexists", sys.exc_info()[2].tb_next == None
>>> None on exists False
>>> None on notexists True
所属していません StackOverflow