gpt4 book ai didi

python - import -force mymodule 用于 python 3.6+?

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:29 24 4
gpt4 key购买 nike

有没有办法在 python 3.6+ 中执行此操作?

import -force mymodule

我只想要一个 python 命令:

(1) 第一次加载模块,

(2) 如果模块已经加载且没有 barfing,则强制重新加载模块。

(这不是一个重复的问题,因为我要求的是不同的东西。我想要的是一个函数调用,它将执行上面的项目(1)和(2)作为相同的函数调用。我不想要手动做出关于我是否可以发出“import”或“imp.reload”的编码决定。我只想要一个函数“def”的 python 代码,它可以检测哪种情况是合适的并自动继续为我做出决定如何导入它,(1) 或 (2)。

我认为它是这样的:

def import_force(m):
import sys
if m not in sys.modules:
import m
else:
import importlib
importlib.reload(m)

除此之外,我不知道如何将模块名称作为参数传递。只是给我一个错误,没有名为“m”的模块

最佳答案

您在新答案中半纠正了一个遗漏的步骤,即您需要在每个使用它的范围内分配新模块。最简单的方法是返回模块对象并将其绑定(bind)到函数外部所需的名称。您最初的实现 90% 正确:

import sys, importlib

def import_force(m):
if m not in sys.modules:
return __import__(m)
else:
return importlib.reload(sys.modules[m])

现在您可以从命令行使用此功能来替换import,例如:

my_module = force_import('my_module')

任何时候当您发现自己使用 exec 来执行一项任务时,已经有如此多定义明确的机制可用,您就会闻到代码的味道。也没有理由每次都重新导入 sysimportlib

关于python - import -force mymodule 用于 python 3.6+?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48228215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com