Редактировать: Вот один из способов рекурсивного импорта всего во время выполнения ...
(Содержимое __init__.py
в каталоге верхнего пакета)
import pkgutil
__all__ = []
for loader, module_name, is_pkg in pkgutil.walk_packages(__path__):
__all__.append(module_name)
_module = loader.find_module(module_name).load_module(module_name)
globals()[module_name] = _module
Я не использую __import__(__path__+'.'+module_name)
здесь, так как это трудно правильно рекурсивно импортировать пакеты, используя его. Если у вас нет вложенных подпакетов и вы хотите избежать использования globals()[module_name]
, то это один из способов сделать это.
Возможно, есть лучший способ, но это лучшее, что я могу сделать, в любом случае.
Оригинальный ответ (Для контекста игнорируйте иное. Сначала я неправильно понял вопрос):
Как выглядит scripts/__init__.py
? Это должно быть что-то вроде:
import script1
import script2
import script3
__all__ = ['script1', 'script2', 'script3']
Вы даже можете обойтись без определения __all__
, но все (pydoc, если ничего больше) будет работать более чисто, если вы определите его, даже если это просто список того, что вы импортировали.