当ipython笔记本和控制台连接到同一内核时同步历史记录

时间:2014-08-09 17:10:55

标签: ipython ipython-notebook

我在远程服务器上运行ipython notebook,即

ipython notebook --profile=nbserver

我从本地计算机访问。此外,我从我的机器ssh到远程服务器,并在该服务器上启动ipython控制台(终端)。我发现以下命令运行良好:

ipython console --existing \
~/.config/ipython/profile_nbserver/security/kernel-*.json

现在我从两个不同的客户端连接到同一个远程内核(让我们称之为browserterminal)。一切都运作良好,除了一个恼人的细节:

1)在browser中,我输入a=1

2)在terminal中,我输入b=2

3)在两个客户端中,我可以使用%history查看这两个命令。但是当我想使用 Up 遍历历史(在terminal中)时,它只显示在终端中输入的命令(即b=2)。同样,我无法在终端中使用a + PageDown ,返回历史记录并找到以a开头的命令。

根据我的理解,我的两个客户使用两个单独的历史文件history.sqlite。但为什么%history显示所有命令?

问题: 是否有任何方法可以为两个客户端使用一个history.sqlite进行配置?

我发现,轻松访问历史记录绝对至关重要。此外,我认为使用终端和浏览器作为补充,它们都有权衡,最好结合使用。

1 个答案:

答案 0 :(得分:3)

您可以通过在终端设置历史记录来设置历史记录的加载位置:

ipython --HistoryManager.hist_file=$HOME/ipython_hist.sqlite

或在ipython配置文件中:

import os
c.HistoryManager.hist_file=os.path.expanduser("~/ipython_hist.sqlite")