Python: импортировать каждый модуль из папки?

Какой был бы лучший (читай: самый чистый) способ сказать Python импортировать все модули из какой-то папки?

Я хочу разрешить людям размещать свои «моды» (модули) в папке в моем приложении, которую мой код должен проверять при каждом запуске и импортировать любой модуль, размещенный там.

Я также не хочу, чтобы добавленная область добавлена ​​к импортированным материалам (не «myfolder.mymodule.something», а «что-то»)

    3 Solutions collect form web for “Python: импортировать каждый модуль из папки?”

    Если преобразование самой папки в модуле, использование файла __init__.py и использование from <foldername> import * подходит вам, вы можете перебирать содержимое папки с помощью «os.listdir» или «glob.glob» и импортируйте каждый файл, заканчивающийся на «.py» с помощью __import__ функции __import__ :

     import os for name in os.listdir("plugins"): if name.endswith(".py"): #strip the extension module = name[:-3] # set the module name in the current global name space: globals()[module] = __import__(os.path.join("plugins", name) 

    Преимущество такого подхода заключается в том, что он позволяет динамически передавать имена модулей __import__ – в то время как оператору «mport» нужны имена модулей, которые должны быть жестко закодированы, и это позволяет вам проверять другие вещи о файлах – возможно, размер или если они импортируют некоторые необходимые модули, прежде чем импортировать их.

    Создайте файл с именем

      __init__.py 

    внутри папки и импортировать имя папки следующим образом:

     >>> from <folder_name> import * #Try to avoid importing everything when you can >>> from <folder_name> import module1,module2,module3 #And so on 

    Возможно, вы захотите попробовать этот проект: https://gitlab.com/aurelien-lourot/importdir

    С помощью этого модуля вам нужно только написать две строки для импорта всех плагинов из вашего каталога, и вам не понадобится дополнительный __init__.py (или любой другой дополнительный файл):

     import importdir importdir.do("plugins/", globals()) 
      Python - лучший язык программирования в мире.