从插件更改应用程序中的全局变量

Change global variable in application from plugin

提问人:Edward Sarkisyan 提问时间:10/29/2023 最后编辑:petezurichEdward Sarkisyan 更新时间:10/29/2023 访问量:42

问:

我有一个 Python 应用程序和此应用程序的插件。谁能向我解释为什么从不通过插件更改?在我加载插件时。 必须将 value 更改为 ,但其输出为 。我做错了什么?global_varmain.pyimportlibdecorator(func)global_varbarglobal_var='foo'

提前非常感谢!

plugin.py

import main

@main.decorator
def init():
    print('hello-from-bar-plugin')
    main.global_var = 'hi'  # <-- does not work (case 1) !

main.py

import sys
from pathlib import Path
from importlib import util as importer

global_var = 'foo'
plugin = None

def decorator(func):
    global global_var
    global_var = 'bar'  # <-- does not work (case 2) !
    return func

def load(name: str, file: Path):
    spec = importer.spec_from_file_location(name, file)
    module = importer.module_from_spec(spec)
    sys.modules[name] = module
    spec.loader.exec_module(module)
    return module

if __name__ == '__main__':
    plugin = load('plugin', Path('./plugin.py'))
    plugin.init()
    print(f'{global_var=}')
插件 全局变量 python-importlib

评论


答: 暂无答案