lml 外掛程式管理,外掛程式式框架,元件開發

2021-09-03 02:39:19 字數 2924 閱讀 4483

lml從您當前的python環境中無縫地找到基於lml的外掛程式,然後根據需要載入外掛程式。

外掛程式發現模組。 它支援通過pip工具和pyinstaller安裝的外掛程式。

lml.loader.scan_plugins(prefix, pyinstaller_path, black_list=none, white_list=none, plugin_name_patterns=none)
通過pkgutil和pyinstaller路徑隱式發現外掛程式

引數說明

引數必選

型別說明

prefix

ture

string

模組字首

pyinstaller_path

false

string

僅在pyinstaller中使用。 當您的最終開發人員使用pyinstaller打包您的主庫及其外掛程式時,此路徑可幫助pyinstaller找到外掛程式。

black_list

false

list

黑名單,跳過名單

white_list

false

list

主模組附帶的模組列表。 如果您有內建模組,則應將模組名稱插入列表中。

plugin_name_patterns

false

string

外掛程式名匹配式

lml將外掛程式分為兩類:load-me-later和load-me-now。

load-me-later是值對於會占用大量記憶體的外掛程式,在需要的時候再載入

load-me-now外掛程式指的是外掛程式會立即匯入

class lml.plugin.plugininfo(plugin_type, abs_class_path=none, tags=none, **keywords)
它與plugininfochain一起用於描述外掛程式。 同時,它是乙個類裝飾器,可用於立即註冊外掛程式以供使用,換句話說,plugininfo裝飾外掛程式類不會在以後載入。

引數說明

引數型別

說明plugin_type

string

外掛程式名absolute_import_path

string

外掛程式類的絕對路徑

br#關鍵字列表

keywords

dict

自定義屬性

舉例:load-me-later

>>> info = plugininfo("sample",

... abs_class_path='lml.plugin.plugininfo', # demonstration only.

... tags=['load-me-later'],

... custom_property = 'i am a custom property')

>>> print(info.module_name)

lml>>> print(info.custom_property)

i am a custom property

load-me-now

>>> @plugininfo("sample", tags=['load-me-now'])

... class testplugin:

... def echo(self, words):

... print("echoing %s" % words)

現在讓我們檢索第二個外掛程式:

>>> class samplepluginmanager(pluginmanager):

... def __init__(self):

... pluginmanager.__init__(self, "sample")

>>> sample_manager = samplepluginmanager()

>>> test_plugin=sample_manager.get_a_plugin("load-me-now")

>>> test_plugin.echo("hey..")

echoing hey..

class lml.plugin.pluginmanager(plugin_type)
將外掛程式資訊載入到記憶體中的字典中以便以後匯入

引數說明

引數型別

說明plugin_type

string

外掛程式型別

方法

dynamic_load_library(a_plugin_info)
動態載入外掛程式

a_plugin_info: 外掛程式例項

get_a_plugin(key, **keywords)
獲取乙個外掛程式

key: 獲取外掛程式的key值

keywords: 其他有助於檢索外掛程式的引數

load_me_later(plugin_info)
註冊外掛程式資訊以便以後載入

plugin_info: plugin info例項

load_me_now(key, library=none, **keywords)
從外掛程式登錄檔匯入外掛程式

key: 獲取外掛程式的key值

library: 使用特定的外掛程式模組

keywords: 其他有助於檢索外掛程式的引數

raise_exception(key)
重寫此方法以引發自定義異常

register_a_plugin(plugin_cls, plugin_info)
用於在執行時動態載入的外掛程式

構建外掛程式式的應用程式框架 五 管理外掛程式

我們現在已經搭建了外掛程式式的應用程式框架,接下來的工作就是要充實框架的內容,提供基本的服務,也就是service。我想首要的任務就是提供外掛程式的管理服務,我在前面的文章也提到了,要實現動態載入必須要知道外掛程式寄宿在 哪些要載入,哪些不載入,這些就是這篇文章要討論的問題。首先解決的就是外掛程式放...

構建外掛程式式的應用程式框架 五 管理外掛程式

我們現在已經搭建了外掛程式式的應用程式框架,接下來的工作就是要充實框架的內容,提供基本的服務,也就是service。我想首要的任務就是提供外掛程式的管理服務,我在前面的文章也提到了,要實現動態載入必須要知道外掛程式寄宿在 哪些要載入,哪些不載入,這些就是這篇文章要討論的問題。首先解決的就是外掛程式放...

WPF Ribbon UI外掛程式式開發框架

先說點題外話,以前沒寫過文章,文筆也不行,拍磚請輕點.使用.net 4.0 telerik第三方控制項開發,設計模式使用mvvm 使用的不正規,見笑了 使用到反射 特性等。使用配置檔案可以配置ui外掛程式 windows工具 外掛程式方法的呼叫。最近工作較忙,沒有時間弄外掛程式管理外掛程式,但直接使...