调用IPython.embed()时,可以在嵌入发生后为其提供命令或魔术函数。
我想运行这样的东西
import IPython
IPython.embed(command='%pylab qt4')
我目前的解决方法是将命令字符串复制到剪贴板,生成一个后台线程,该线程发送键击%paste然后输入到当前窗口。这在linux上运行正常,但它非常hacky,我无法在Windows上运行它。看起来应该可以指定这个,但我从来没有理解IPython配置是如何工作的,或者嵌入的参数是用于什么的。
答案 0 :(得分:2)
自IPython 4.0起,IPython.config
软件包已被弃用。您应该改为从traitlets.config导入。
import IPython
from pkg_resources import parse_version # installed with setuptools
if parse_version(IPython.release.version) >= parse_version('4.0.0'):
from traitlets.config import Config
else:
import IPython.config
from IPython.config import Config
c = Config()
c.InteractiveShellApp.exec_lines = [
'%pylab qt4'
"print('System Ready!')",
]
IPython.start_ipython(config=c)
答案 1 :(得分:1)
该文件指出IPython.start_ipython
读取配置文件,而IPython.embed
则不读取。考虑到这一点,让我们使用前者:
import IPython
c = IPython.Config()
c.InteractiveShellApp.exec_lines = [
'%pylab qt4',
"print 'System Ready!'",
]
IPython.start_ipython(config=c)
我不确定是什么意思来保留当前的命名空间。如果你的意思是本地/全局变量:
IPython.start_ipython(config=c, user_ns=locals()) # Pass in local variables
IPython.start_ipython(config=c, user_ns=globals()) # Pass in global variables