Comment puis-je distinguer « module introuvable » du « module jeté exception » sur ImportError?

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

  •  13-09-2019
  •  | 
  •  

Question

En Python, import does_not_exist soulève ImportError et

import exists

exists.py:

import does_not_exist

soulèvera aussi ImportError.

Comment dois-je faire la différence dans le code?

Était-ce utile?

La solution

La seule méthode que je sais est de vérifier si le modulename toplevel « existe » est dans le message de l'exception ou non:

try:
  import exists
except ImportError as exc:
  if "exists" in str(exc):
     pass
  else:
     raise

Serait-ce une demande de fonctionnalité pour ImportError Python? Avoir une variable pour le nom du module serait certainement pratique ..

Autres conseils

Vous pouvez utiliser le tb_next du retraçage. Il sera différent de Aucun si l'exception est survenue sur un autre module

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top