Это моя структура файла:Импорт дополнительного модуля
[mylibrary]
__init__.py
[codecs]
__init__.py < this is the file that we're talking about
optional.py
Теперь у меня есть этот код в маркированной __init__.py
:
def load_optional_codecs():
try:
from mylibrary.codecs import optional
# do stuff with optional
except ImportError:
pass
Существует одна проблема с этим. Если модуль optional
содержит исключительное исключение импорта, он будет терпеть неудачу. Есть ли способ импортировать дополнительный модуль без отключения каких-либо исключений из модуля?
Это может показаться неясным сценарий, но я получил неприятную ошибку из-за глушителем исключения, и я хотел бы, чтобы не допустить этого в будущем.
Вы можете сообщать об исключении пользователю или записывать его в лог вместо 'pass' в блоке' except', но если в результате неудачи импорта появляются неприятные ошибки, я бы сказал, что это почти наверняка не «необязательно». – geoffspear
@Wooble: нет, 'from mylibrary.codecs import optional' не подвел. Проблема заключалась в том, что модуль 'optional' импортировал модуль, который потерпел неудачу (из-за ошибки программирования), но эта ошибка отключилась. – orlp