在ipython笔记本电脑和控制台连接到同一内核时同步历史记录
我有在ipython笔记本电脑和控制台连接到同一内核时同步历史记录,ipython,ipython-notebook,Ipython,Ipython Notebook,我有ipython笔记本在远程服务器上运行,即 ipython notebook --profile=nbserver 我可以从本地机器访问它。此外,我从我的机器ssh到远程服务器,并在该服务器上启动ipython控制台(终端)。我发现以下命令很有效: ipython console --existing \ ~/.config/ipython/profile_nbserver/security/kernel-*.json 现在我从两个不同的客户端连接到同一个远程内核(让我们称它们为brow
ipython笔记本
在远程服务器上运行,即
ipython notebook --profile=nbserver
我可以从本地机器访问它。此外,我从我的机器ssh到远程服务器,并在该服务器上启动ipython控制台(终端)。我发现以下命令很有效:
ipython console --existing \
~/.config/ipython/profile_nbserver/security/kernel-*.json
现在我从两个不同的客户端连接到同一个远程内核(让我们称它们为browser
和terminal
)。除了一个恼人的细节外,一切都很顺利:
1) 在浏览器中
,我键入a=1
2) 在终端
中,我键入b=2
3) 在两个客户端中,我都可以使用%history
看到这两个命令。但是,当我想使用Up循环浏览历史记录(在终端
)时,它只显示终端中键入的命令(即b=2
)。类似地,我无法在终端中使用a
+PageDown返回历史并找到以a
开头的命令
据我所知,我的两个客户端正在使用两个独立的历史文件history.sqlite
。但是为什么%history
显示所有命令
问题:
有没有办法为两个客户端使用一个history.sqlite
进行配置
我发现,轻松接触历史绝对至关重要。此外,我认为使用终端和浏览器是互补的,两者都有折衷之处,最好结合使用。您可以通过在终端设置历史记录来设置历史记录的加载位置:
ipython --HistoryManager.hist_file=$HOME/ipython_hist.sqlite
或在ipython配置文件中:
import os
c.HistoryManager.hist_file=os.path.expanduser("~/ipython_hist.sqlite")
历史数据库会同时处理来自两个客户端的访问吗?我猜他们实际上会互相攻击,因为这是一个sqlite文件。。。不妨尝试一下,看看会发生什么!为什么
%history
会在两个客户端中显示完整的历史记录?