嵌入到IPython后,你能指定一个命令到运行吗?
Can you specify a command to run after you embed into IPython?
当调用 IPython.embed()
时,是否可以在嵌入发生后向 运行 提供命令或魔法函数。
我想要运行这样的东西
import IPython
IPython.embed(command='%pylab qt4')
我目前的解决方法是将命令字符串复制到剪贴板,生成一个后台线程,发送击键 %paste 然后回车到当前 window。这在 linux 上工作正常,但它非常 hacky,我无法让它在 Windows 上工作得很好。似乎应该可以指定这一点,但我从来没有掌握 IPython 配置是如何工作的,或者嵌入的参数是用来做什么的。
文档说IPython.start_ipython
读取配置文件,而IPython.embed
不读取。考虑到这一点,让我们使用前者:
import IPython
c = IPython.Config()
c.InteractiveShellApp.exec_lines = [
'%pylab qt4',
"print 'System Ready!'",
]
IPython.start_ipython(config=c)
更新
我不确定保留当前命名空间是什么意思。如果你的意思是 local/global 个变量:
IPython.start_ipython(config=c, user_ns=locals()) # Pass in local variables
IPython.start_ipython(config=c, user_ns=globals()) # Pass in global variables
IPython.config
包自 IPython 4.0 以来已被弃用。您应该改为从 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)
当调用 IPython.embed()
时,是否可以在嵌入发生后向 运行 提供命令或魔法函数。
我想要运行这样的东西
import IPython
IPython.embed(command='%pylab qt4')
我目前的解决方法是将命令字符串复制到剪贴板,生成一个后台线程,发送击键 %paste 然后回车到当前 window。这在 linux 上工作正常,但它非常 hacky,我无法让它在 Windows 上工作得很好。似乎应该可以指定这一点,但我从来没有掌握 IPython 配置是如何工作的,或者嵌入的参数是用来做什么的。
文档说IPython.start_ipython
读取配置文件,而IPython.embed
不读取。考虑到这一点,让我们使用前者:
import IPython
c = IPython.Config()
c.InteractiveShellApp.exec_lines = [
'%pylab qt4',
"print 'System Ready!'",
]
IPython.start_ipython(config=c)
更新
我不确定保留当前命名空间是什么意思。如果你的意思是 local/global 个变量:
IPython.start_ipython(config=c, user_ns=locals()) # Pass in local variables
IPython.start_ipython(config=c, user_ns=globals()) # Pass in global variables
IPython.config
包自 IPython 4.0 以来已被弃用。您应该改为从 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)