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

Mar*_*ter 6 ipython ipython-notebook

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

ipython notebook --profile=nbserver
Run Code Online (Sandbox Code Playgroud)

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

ipython console --existing \
~/.config/ipython/profile_nbserver/security/kernel-*.json
Run Code Online (Sandbox Code Playgroud)

现在我从两个不同的客户端连接到同一个远程内核(可以叫他们browserterminal).一切都运作良好,除了一个恼人的细节:

1)在browser,我输入a=1

2)在terminal,我输入b=2

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

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

问题: 有没有办法history.sqlite为两个客户端配置一个?

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

小智 4

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

ipython --HistoryManager.hist_file=$HOME/ipython_hist.sqlite
Run Code Online (Sandbox Code Playgroud)

或者在 ipython 配置文件中:

import os
c.HistoryManager.hist_file=os.path.expanduser("~/ipython_hist.sqlite")
Run Code Online (Sandbox Code Playgroud)