我试图根据一个参数从一个模块中动态导入函数,但不太明白。我有一个处理函数,然后一个子目录,每个子目录中都有一个我想使用的函数。我正在使用 import_module
从 importlib
但它还没有完全解决我的问题。
我的文件结构是
handler.py
functions
--__init__.py
--square.py
这是我导入的模块square.py
):
def sq(param):
return param*param
这是我的处理程序代码
from importlib import import_module
def main(fun):
file = import_module(fun)
result = fun.sq(4)
print(result)
我调用我的处理程序是这样的: main("functions.square")
我想这样调用我的处理程序: main("functions.square.sq")
这样我的主函数就会像:
from importlib import import_module
def main(fun):
file = import_module(fun)
result = fun(4)
print(result)
你知道怎么做吗?
谢谢你的帮助。
我有一个变通的办法,把所有子文件的主函数(比如 square)命名为相同的,把它们都命名为 run()
. 因此,我可以像这样动态地调用它们。
from importlib import import_module
def main(fun):
result = import_module(fun).run(4)
print(result)
如果有人在看这个,我是通过AWS Lambda来做的 这就造成了额外的问题。我把它修复成这样。
from importlib import import_module
def main(fun):
result = return import_module("src.main.functions." + fun).run(4)
print(result)
我的文件结构是这样的:
project
--| lambdas
----| src
------| main
--------| handler.py
--------| functions
----------| __init__.py
----------| square.py