Как вызвать функцию в файле Python, который является частью некоторого другого файла Python
Название может быть неправильным, но это самое близкое, о чем я мог подумать.
У меня есть файл sample.py, который похож на анализатор командной строки, созданный с использованием argparse. Основываясь на аргументах, он вызывает другие файлы Python. Например, чтобы скомпилировать опцию модуля в -C.
cmd>python sample.py -M module -C
В зависимости от имени модуля файл конфигурации находится в файле module/configuration.py.
Мне нужно вызвать несколько функций из файла configuration.py. Какой лучший способ сделать. Я не могу импортировать файлы Python, так как путь всегда будет отличаться, и файл должен быть импортирован во время выполнения.
Есть ли способ решить эту проблему?
Я читал о пакете importlib, но не смог заставить его работать для меня.
Структура моей структуры:
sample.py
|
APIs
|
compile.py
/module/configuration.py
пример файла compile.py
#compile.py
import <packages>
def compile(module_name):
# call some function in /module/configuration.py file.
Проблема в том, что имя_модуля передается в функции компиляции, поэтому я не могу использовать при импорте.
Мой вопрос может быть слишком длинным или слишком очевидным, но я много боролся. Любая помощь приветствуется.
1 ответ
Как насчет этого?
# Equivalent to dynamically `import`ing `module`
moduleName = 'module.configuration'
module = __import__(moduleName)
Кстати, __import__()
это встроенная функция, поэтому вы можете получить к ней доступ из любого места. Хотя это немного сложнее / сложнее, чем importlib.import_module()
он гораздо более гибкий и, вопреки тому, что написано в документации, может быть очень полезен в повседневном коде.