如何调用加载的插件模块?

2024-04-25 08:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

要么是睡眠不足,但我觉得很傻,我不能得到这个。我有一个插件,我看到它被加载了,但我不能在我的主文件中实例化它:

from transformers.FOMIBaseClass import find_plugins, register
find_plugins()

下面是我的FOMIBaseClass:

from PluginBase import MountPoint
import sys
import os

class FOMIBaseClass(object):
    __metaclass__ = MountPoint

    def __init__(self):
        pass

    def init_plugins(self):
        pass

def find_plugins():
    plugin_dir = os.path.dirname(os.path.realpath(__file__))
    plugin_files = [x[:-3] for x in os.listdir(plugin_dir) if x.endswith("Transformer.py")]
    sys.path.insert(0, plugin_dir)
    for plugin in plugin_files:
        mod = __import__(plugin)

我的出发点是:

class MountPoint(type):
    def __init__(cls,name,bases,attrs):
        if not hasattr(cls,'plugins'):
            cls.plugins = []
        else:
            cls.plugins.append(cls)

我看到它被加载了:

# /Users/carlos/Desktop/ws_working_folder/python/transformers/SctyDistTransformer.pyc matches /Users/carlos/Desktop/ws_working_folder/python/transformers/SctyDistTransformer.py
import SctyDistTransformer # precompiled from /Users/carlos/Desktop/ws_working_folder/python/transformers/SctyDistTransformer.pyc

但是,就我的一生而言,我无法从主文件实例化'SctyDistTransformer'模块。我知道我错过了一些小事。基本上,我想使用一个类加载插件。你知道吗


Tags: pathfromimportinitosdefdirplugins

热门问题