このコードを実行すると:
src = "import os"
d = dict(__builtins__={})
exec src in d
パイソンは次のように述べています。
ImportError: __import__ not found
それが私がやりたいことですが、新しいモジュールを作成する(またはロードする)とき:
import imp
mod = imp.new_module("foo")
src = "import os"
exec src in mod.__dict__
ご覧のとおり実行されますが、上記のプログラムのように実行されないのが好きです。組み込みの変数と関数をすべて無効にするのが好きです。これを行う方法はありますか?
を印刷すると、任意の Python モジュールなどの変数が含まれmod.__dict__
ていることがわかります。__builtins__
その値を に変更する必要があると思いますが{}
、方法がわかりません。