Come faccio a distinguere “modulo non trovato” da “modulo gettato eccezione” su ImportError?
-
13-09-2019 - |
Domanda
In Python, import does_not_exist
solleva ImportError
, e
import exists
exists.py
:
import does_not_exist
sarà anche aumentare ImportError
.
Come faccio a capire la differenza nel codice?
Soluzione
L'unico metodo che conosco è quello di verificare se il modulename toplevel "esiste" è nel messaggio del eccezione o no:
try:
import exists
except ImportError as exc:
if "exists" in str(exc):
pass
else:
raise
Potrebbe essere questa una richiesta di funzionalità per ImportError di Python? Avere una variabile per il nome del modulo sarebbe certamente comodo ..
Altri suggerimenti
È possibile utilizzare il tb_next del traceback. Sarà diverso da Nessuno se l'eccezione si è verificato su un altro modulo
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow