Normalmente, vejo esse padrão pelo menos uma vez em cada projeto Python em que trabalho. Por exemplo, em um projeto Django, isso geralmente é adicionado na parte inferior do arquivo de configurações básicas:
try:
from .local_settings import *
except ImportError:
pass
Além disso:
try:
import simplejson as json
except ImportError:
import json
Isso sempre me incomodou um pouco; e se o módulo for importado com sucesso, mas ele disparar um ImportError
? Por exemplo, no primeiro exemplo, o local_settings
módulo existe, mas local_settings
tenta importar um módulo inexistente.
Essa é a maneira mais segura de importar um módulo opcional, existe uma maneira melhor de obter essa funcionalidade ou depende do contexto / uso (e se sim, quais são as diretrizes para decidir quando usar essa abordagem)?