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工具 外掛程式方法的呼叫。最近工作較忙,沒有時間弄外掛程式管理外掛程式,但直接使...