Как использовать importlib со списком вместо «из x импортировать x»

#python #import #module #python-importlib #import-module

Вопрос:

Я обновляю свой код, чтобы включить инструкции Try and Except, чтобы сделать его более надежным. Моя текущая реализация-это множество отдельных инструкций try и except, каждая из которых содержит отдельные инструкции импорта:

 try:
    from Helpers import editorfunctions

except Exception as e:
    print(e)
    print(sys.exc_info())

try:
    from Helpers import datamanipulation

except Exception as e:
    print(e)
    print(sys.exc_info())

try:
    from DefaultFolderStructure import defaultfolderstructure

except Exception as e:
    print(e)
    print(sys.exc_info())
 

Это довольно запутанно, и я хочу переформатировать это так, чтобы это был цикл, который проходит через список — что-то вроде этого:

 libs = ['Helpers.editorfunctions', 'Helpers.datamanipulation', "DefaultFolderStructure.defaultfolderstructure"]

for lib in libs:
    try:
        lib = import_module(lib)

    except:
        print(sys.exc_info())
 

Текущий код sudo выше не работает, мне интересно, как я могу заставить его работать?

Все модули, которые я импортирую, находятся в дочерних папках текущего каталога.

Я пробовал использовать sys.path.append («..»), чтобы module_import() мог найти пакет и импортировать модули из списка, но я знаю, что мне чего-то не хватает!. Любая помощь была бы очень признательна, спасибо.

Комментарии:

1. Будет ли ваш код по-прежнему работать, если эти модули отсутствуют, и вы поймали ошибки импорта? Если нет, то вы повторно пытаетесь/перехватываете, так как эти ошибки уже будут распечатаны, если модуль отсутствует во время выполнения.

2. @Stephen Да, мой код все равно будет работать, если модуль отсутствует или есть ошибка. Я только что протестировал его, введя синтаксическую ошибку, и остальная часть импорта все еще работала. Таким образом, этот метод должен работать, если я импортирую из списка или использую свою текущую реализацию.

3. Вы сказали, что использование importlib.__import__(name) не работает. Покажите нам, что вы пробовали, потому что это должно сработать.

4. Извините за поздний ответ. Вот мой текущий код — я получаю неопределенную ошибку модуля после его запуска. ‘импорт sys импорт importlib sys.path.добавить(«..») библиотеки = [‘Помощники.функции редактирования’, ‘Помощники.обработка данных’] для библиотеки в библиотеках: попробуйте: lib = importlib.__импорт__(lib) за исключением: печать(sys.exc_info()) ‘