EDIT実際の最小限の例は動作しません(より複雑なコードの一部です)。犯人は、すべての後にinputhookの一部です:ipython 0.12を埋め込み、呼び出し元の名前空間を継承する方法は?
def foo():
exec 'a=123' in globals()
from IPython.frontend.terminal.embed import InteractiveShellEmbed
ipshell=InteractiveShellEmbed()
ipshell()
# without inputhook, 'a' is found just fine
import IPython.lib.inputhook
IPython.lib.inputhook.enable_gui(gui='qt4')
foo()
は0.12で実行:
In [1]: a
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/tmp/<ipython-input-1-60b725f10c9c> in <module>()
----> 1 a
NameError: name 'a' is not defined
周りの方法だろうか?
それは開発版で動作しているようです - 多分修正されました0.12のバグがありました。 –
@ThomasK:私は例を複雑にして、実際にそれを非機能にする必要がありました。これはqt4 inputhookに関連しています。以前は0.11で正常に動作していました。 – eudoxos