Skip to content

Latest commit

 

History

History
53 lines (44 loc) · 2.7 KB

README.md

File metadata and controls

53 lines (44 loc) · 2.7 KB

import autoload

когда ты слишком ленивый, чтобы перечислять отдельные компоненты модулей при импорте

"""example.py"""
from test_package import package_file_0
from test_package import package_file_1
...
from test_package import package_file_n

на помощь приходят importlib.import_module(), или importlib.__import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)

но самые хитрые автоматизируют

pip install -U import-autoload
"""__init__.py"""
from autoload import autoload

__all__ = autoload()
"""example.py"""
from test_package import *

расширенный вариант

"""main.py"""
from autoload import autoload

autoload("project_dir.test_package", pattern="package_file_[0123]")

параметры

  1. module_name указывает путь до пакета (каталога), пишется через точку(!), как при импорте from module_name import. по-умолчанию берется путь к текущему модулю, так что одну точку можно не указывать. а две точки, как ссылка на каталог выше, должны сработать, но я не пробовал
  2. pattern как при поиске файлов, например в fnmatch(filename, pattern), по-умолчанию *.py
  • параметры можно комбинировать
  • если нужно выбрать один файл из каталога, его лучше прописать в pattern, а не в хвост пути: так autoload("package.sub.name", "module"), а не так autoload("package.sub.name.module")
  • но если выбираете один файл из текущего модуля, пишите его имя в первый параметр autoload("module"); с точкой autoload(".", "module") вроде бы работает, но я не проверял

предыдущий проект

доделать

  • для module_name добавить обработку системных разделителей путей

Lines of code Downloads Statistic GitHub