Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

あらびきな方法でbuiltinsを拡張する

こんにちわ。あらびきプログラマーことmopemopeです。
builtinsをあらびきな方法で拡張する方法を紹介しておきます

拡張モジュールを作っていじる。

PyThreadState *tstate = PyThreadState_GET();
PyInterpreterState *interp = tstate->interp;
// builtin dict
PyObject *dict = interp->builtins;
PyDict_SetItemString(dict, "test", PyString_FromString("test!!!!!!!"));

importする

importした時点でbuiltinsが拡張され、その後ずっと使えるようになる。

起動時に拡張したいんだけど

起動時にimportされるモジュール内で拡張モジュールを読み込ませてしまう。
起動時にimportされるモジュールは

python -v

でわかるので仕込めそうなところで仕込む。
(とはいえきついかな)
楽なのはsite.py周りでimportしてしまう方法。
だがフラグで読み込まなくもできるので注意。