Ho un modulo che importa un modulo, ma in alcuni casi il modulo che si sta importando potrebbe non esistere. Dopo che il modulo è stato importato, una classe eredita da una classe il modulo importato. Se dovessi rilevare l'eccezione ImportError
nel caso in cui il modulo non esista, come posso impedire a Python di analizzare il resto del modulo? Sono aperto ad altre soluzioni se questo non è possibile.Come uscire da un modulo prima di aver terminato l'analisi?
Ecco un esempio di base (selfaware.py):
try:
from skynet import SkyNet
except ImportError:
class SelfAwareSkyNet():
pass
exit_module_parsing_here()
class SelfAwareSkyNet(SkyNet):
pass
Gli unici modi che posso pensare di farlo è:
- Prima di importare il modulo
selfaware.py
, controllare se il moduloskynet
è disponibile e semplicemente passa o crea una classe stub. Ciò causerà DRY seselfaware.py
viene importato più volte. All'interno della classe
selfaware.py
è definita la classe con il bloccotry
. es .:try: from skynet import SkyNet class SelfAwareSkyNet(SkyNet): pass except ImportError: class SelfAwareSkyNet(): pass
Cosa c'è di sbagliato con la soluzione? Non funziona? Riceve un errore? –
C'è un eco qui? Cos'è con tutte le risposte duplicate esatte? E perché entrambi i duplicati più recenti hanno punteggi più alti dei vecchi? –
@MuMind Immagino di non aver notato che la risposta di hyperboreean è stata modificata dopo che inizialmente era errata. Ho riattivato la risposta. –