Comment puis-je distinguer « module introuvable » du « module jeté exception » sur ImportError?
-
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?
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