Импорт функций из пути в список / дикт - PullRequest
0 голосов
/ 05 октября 2019

Что?

Я пытаюсь импортировать все функции из файла (с учетом его пути) в список / dict

В данный момент я использую то, что было сказано здесь и здесь . В результате это

import inspect
import importlib.util

def functions_from_file(path_to_module):
    spec = importlib.util.spec_from_file_location("my_module", 
                                                  path_to_module)
    module  = importlib.util.module_from_spec(spec)
    spec.loader.exec_module(module)
    custom_functions = inspect.getmembers(module, inspect.isfunction)
    return dict(custom_functions)

Это, по крайней мере для меня, кажется очень запутанным. Есть ли лучший / более чистый способ сделать это?

Почему?

Причина, по которой я это делаю, заключается в том, что я хочу, чтобы пользователь мог указать файл, содержащий список функцийэто будет выполнено в середине моего кода. Таким образом, файл может выглядеть примерно так:

def fun1(my_dict):
    my_dict['foo'] = my_dict['bar']*2

def fun2(my_dict):
    my_dict['baz'] = my_dict['foo'] - my_dict['bar']

, и тогда в моем коде должно быть что-то вроде

for fun in functions_list:
    fun(my_dict)

1 Ответ

0 голосов
/ 06 октября 2019

Вы пытались импортировать py-файл как модуль в целевой файл?

См. Документацию здесь

...