Импортировать папку модулей в Python

Возможно ли в python получить список модулей из папки / пакета и импортировать их?

Я хотел бы иметь возможность сделать это из функции внутри класса, чтобы весь класс имел к ним доступ (возможно, это был метод __init__ ).

Любая помощь будет принята с благодарностью.

3 Solutions collect form web for “Импортировать папку модулей в Python”

См. Документ модулей .

Единственное решение для автора пакета – предоставить явный индекс пакета. Оператор import использует следующее соглашение: если код __init__.py пакета определяет список с именем __all__ , он считается списком имен модулей, которые должны быть импортированы, когда из импорта пакета * встречается. Автору пакета рекомендуется сохранить этот список в актуальном состоянии при выпуске новой версии пакета. Авторы пакета могут также решить не поддерживать его, если они не видят использования для импорта * из своего пакета. Например, файл sound / effects / __init__.py может содержать следующий код:

 __all__ = ["echo", "surround", "reverse"] 

Это означало бы, что из sound.effects import * будет импортировать три названных подмодуля звукового пакета.

Да, вы могли бы найти способ сделать это, выполнив список каталогов для файлов в каталоге и импортировав их вручную. Но нет встроенного синтаксиса для того, что вы просите.

Вы можете узнать список модулей с функцией dir

 import module dir (module) 

Позже в программе вы можете импортировать одну функцию:

 from module import function 

distribute модуль предоставляет механизм, который делает большую часть этого. Во-первых, вы можете начать с перечисления файлов python в пакете с помощью pkg_resources.resource_listdir :

 >>> module_names = set(os.path.splitext(r)[0] ... for r ... in pkg_resources.resource_listdir("sqlalchemy", "/") ... if os.path.splitext(r)[1] in ('.py', '.pyc', '.pyo', '') ... ) - set(('__init__',)) >>> module_names set(['engine', 'util', 'exc', 'pool', 'processors', 'interfaces', 'databases', 'ext', 'topological', 'queue', 'test', 'connectors', 'orm', 'log', 'dialects', 'sql', 'types', 'schema']) 

Затем вы можете импортировать каждый модуль в цикл:

 modules = {} for module in module_names: modules[module] = __import__('.'.join('sqlalchemy', module)) 
  • Не удалось использовать easy_install для установки модулей Python
  • Большинство полезных модулей Python из стандартной библиотеки?
  • Ленивые переменные модуля - это можно сделать?
  • Пользовательский модуль Python не импортирует
  • Как программно установить глобальную (модульную) переменную?
  • Модули GAE и конечные точки Google
  • установка модуля запросов в окнах python 2.7
  • Импорт модулей в Python и __init__.py
  • Python - лучший язык программирования в мире.