Как вызвать функцию в файле 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()он гораздо более гибкий и, вопреки тому, что написано в документации, может быть очень полезен в повседневном коде.

Другие вопросы по тегам