카테고리 없음
[파이썬] 파이썬의 플러그인 관리자
행복을전해요
2020. 12. 21. 08:55
가장 기본적인 수준에서 무엇보다도 애플리케이션 용으로 작성된 모든 플러그인의 기반이되는 기본 플러그인 클래스를 제공하려고합니다.
다음으로 모두 가져와야합니다.
class PluginLoader():
def __init__(self, path):
self.path = path
def __iter__(self):
for (dirpath, dirs, files) in os.walk(self.path):
if not dirpath in sys.path:
sys.path.insert(0, dirpath)
for file in files:
(name, ext) = os.path.splitext(file)
if ext == os.extsep + "py":
__import__(name, None, None, [''])
for plugin in Plugin.__subclasses__():
yield plugin
Python 2.7 또는 3.1+에서는 대신 다음을 __import__(name, None, None, [''])
고려하십시오.
import importlib # just once
importlib.import_module(name)
이것은 모든 플러그인 파일을로드하고 모든 플러그인을 제공합니다. 그런 다음 적합하다고 판단되는 플러그인을 선택한 다음 사용합니다.
from multiprocessing import Process, Pipe
plugins = {}
for plugin in PluginLoader("plugins"):
... #select plugin(s)
if selected:
plugins[plugin.__name__], child = Pipe()
p = Process(target=plugin, args=(child,))
p.start()
...
for plugin in plugins.values():
plugin.put("EventHappened")
...
for plugin in plugins.values():
event = plugin.get(False)
if event:
... #handle event
이것은 처음에 떠오르는 것입니다. 분명히 육체를 위해서는 훨씬 더 많은 것이 필요하지만, 작업하기에 좋은 기초가되어야합니다.
-------------------yapsy
플러그인 https://github.com/tibonihoo/yapsy를 확인 하십시오 . 이것은 당신을 위해 작동합니다
출처
https://stackoverflow.com/questions/7417997