Как разрешить исключение модуля при импорте моего пакета Python? - PullRequest
0 голосов
/ 10 января 2019

Я написал пакет Python pack, который может выполнять набор связанных задач taskA, taskB, ..., taskZ. Каждый из них имеет свой собственный файл модуля, например taskN.py.

Теперь произнесите: taskN.py Я импортирую сторонний пакет evilpack. Он работает на моей машине ™, но мой коллега (а) не может установить evilpack, но (б) даже не нуждается в этом модуле taskN.

Моя цель - структурировать мой пакет так, чтобы мы могли выбирать во время импорта, хотим ли мы загрузить модуль taskN или игнорировать его.

Какой самый элегантный способ решить эту проблему? Я чувствую, что это как-то связано с файлами каталогов __init__.py.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Простой способ решить эту проблему:

Определите все модули, которые могут иметь невыполненные зависимости.

В главном модуле, который выполняет импорт, окружите каждый такой импорт выражением try...except:

try:
    import packN
except ImportError as details:
    print ("Could not import packN because of this error:", details)
    print ("Functionality xxxx will not be available")
    packN = None

Если код вашего коллеги не вызывает функцию, основанную на packN, тогда все будет хорошо.

0 голосов
/ 10 января 2019

Я думаю, что могу указать вам только правильное направление через setupscript , потому что у меня нет доступа к вашим данным / данным пакета.

Проще говоря, вам нужно найти сценарий taskN.py setup.py и, в частности, удалить модуль из сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...