我在一个子模块中有一个函数,通常可以这样导入:

from core.somepack import my_func

取而代之的是,我想通过给定的Python 弦core.somepack.my_func懒洋洋地导入它.做这件事最好的方法是什么?

my_func = some_function_i_am_asking_for('core.somepack.my_func')
my_func()

推荐答案

试着使用python内置的importlib模块. 当模块名称直到运行时才知道时,它有助于在运行时导入模块或函数. 以下是使用importlib进行延迟导入的示例代码:

import importlib

def lazy_import(fn_path):
    module_path, fn_name = fn_path.rsplit('.', 1)
    module = importlib.import_module(module_path)
    fn = getattr(module, fn_name)
    return fn

您可以使用'module_name.func_name'字符串调用lazy_import函数.

Python相关问答推荐

Pandas 第二小值有条件

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

非常奇怪:tzLocal.get_Localzone()基于python3别名的不同输出?

如何访问所有文件,例如环境变量

如何使用LangChain和AzureOpenAI在Python中解决AttribeHelp和BadPressMessage错误?

如何在solve()之后获得症状上的等式的值

Pandas计数符合某些条件的特定列的数量

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

启用/禁用shiny 的自动重新加载

如何禁用FastAPI应用程序的Swagger UI autodoc中的application/json?

网格基于1.Y轴与2.x轴显示在matplotlib中

以逻辑方式获取自己的pyproject.toml依赖项

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

用fft计算指数复和代替求和来模拟衍射?

用来自另一个数据框的列特定标量划分Polars数据框中的每一列,

read_csv分隔符正在创建无关的空列

对于标准的原始类型注释,从键入`和`从www.example.com `?

在MongoDB文档中仅返回数组字段

Scipy.linprog的可行性有问题吗?(A_ub@x0<;=b_ub).all()为True-但是-linprog(np.zeros_like(X0),A_ub=A_ub,b_ub=b_ub)不可行

使用美汤对维基百科表格进行网络刮擦未返回任何内容