タグ

MetaProgrammingとtipsに関するoinumeのブックマーク (2)

  • pythonでプラグイン管理のしくみを作ってみました。 - LinuxとかBlenderとかVol2

    先日作ったファイルコピーツールにプラグイン機能を追加する時にも使えるかな。。。と思いながら、簡易プラグイン管理クラスを作ってみました。 クラスの名前はPluginMgrです。(あまりにも安易な名前ですけどね。。) このPluginMgrは以下のことを行います。 ・指定されたディレクトリ中から、モジュールをインポートする。 ・インポートしたモジュールがプラグインとしての条件(必要な関数が存在すること)を満たしている場合には モジュールごとに、関数名と関数オブジェクトの辞書を作成して保持。 ソースコードはこんな感じです。 # -*- coding: utf-8 -*- import os import sys import inspect # # class PluginMgr: ''' プラグイン管理マネージャ。 生成時に指定されたプラグインディレクトリ中から、プラグインプロトコル に適合す

    pythonでプラグイン管理のしくみを作ってみました。 - LinuxとかBlenderとかVol2
  • PythonでPluginアーキテクチャ | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー Pythonのモジュールを動的に読み込んでプラグインとして利用するための簡易な方法。 たとえば,以下のような構成のフォルダがあるとして,mod.pyとpack/__init__.pyにはそれぞれfoo()という関数が書かれているとする。 [plugins]--+ | +- mod.py | +- [pack] --+ | +- __init__.py pluginsディレクトリと同じ位置に以下のスクリプトを置くと,pluginsディレクトリ以下にあるPythonのモジュールやパッケージを動的に読み込み,モジュールオブジェクトとしてリストに格納,モジュールのfoo()という関数を呼び出す

  • 1