ImportErrorの「モジュールが例外を投げた」から、私は「モジュールが見つかりません」どのように区別するのですか?

StackOverflow https://stackoverflow.com/questions/1860363

  •  13-09-2019
  •  | 
  •  

質問

Pythonでは、import does_not_existImportErrorを上昇させ、そして

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top