« 2008年02月 | メイン | 2008年10月 »

2008年03月 アーカイブ

2008年03月03日

Pythonでモジュールを動的生成する

なんとなくPythonがわかってきた山川です。 今日はmoduleの扱いについてわかってきたことを書きます。

まず、モジュールを直接ネームスペースに追加せず、 変数に代入するには以下のように書きます。

mod = __import__("sys")

場合によってはsys.pathにモジュール探索パスを追加せず、 直接pythonファイルを指定してモジュールとして扱いたい場合があるかもしれません。 その場合はimpモジュールを使うとうまくいきます。

import imp
mod = imp.load_source("foo", "foo.py")

さて、impモジュールは実ファイルがある場合にのみ動作します。 これはimpモジュールのC実装ではファイルシステムを調べて、モジュールを読み込む際に コンパイル済みのファイルがないかどうかなどをチェックしているためのようです。 しかし、コードジェネレータから生成したスクリプトを そのままモジュールとして扱いたいときなど、 ファイルを経由せずにモジュールを生成したい場合はどうすればよいでしょうか。

続きを読む "Pythonでモジュールを動的生成する" »