睡眠不足ですが、これが取れないのはばかげています。プラグインがあり、ロードされているのがわかりますが、メインファイルでインスタンス化できません。
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)
これが私のMountPointです:
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」モジュールをインスタンス化することはできません。私は些細なことを見逃していることを知っています。基本的に、クラスローディングプラグインを採用したいと思います。