Python从子目录动态导入函数。

问题描述 投票:0回答:1

我试图根据一个参数从一个模块中动态导入函数,但不太明白。我有一个处理函数,然后一个子目录,每个子目录中都有一个我想使用的函数。我正在使用 import_moduleimportlib但它还没有完全解决我的问题。

我的文件结构是

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)

你知道怎么做吗?

谢谢你的帮助。

python import parameters module parameter-passing
1个回答
0
投票

我有一个变通的办法,把所有子文件的主函数(比如 square)命名为相同的,把它们都命名为 run(). 因此,我可以像这样动态地调用它们。

from importlib import import_module

def main(fun):
  result = import_module(fun).run(4)
  print(result)

0
投票

如果有人在看这个,我是通过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
© www.soinside.com 2019 - 2024. All rights reserved.