让IPython从网络套接字接受命令并在主线程中执行
我正在尝试设置我的Vim,以便可以向正在运行的IPython实例发送命令。虽然有一些脚本可以做到这一点,但它们已经过时了,所以我想自己写一个新的。
我现在遇到的主要问题是,如何让IPython在后台监听网络连接(也就是说,使用不同的线程,其他解决方案也可以),并在主线程中执行接收到的命令。之前的脚本没有在主线程中执行命令,这样会导致像matplotlib这样的程序经常崩溃。
我看到twisted提供了一个ThreadedSelectReactor
,但我不知道如何将它与IPython正确结合使用。
更新
举个例子:
假设你打开了两个窗口,一个是运行IPython的终端,另一个是你在Vim中编辑Python脚本的窗口。你在Vim中选中一行代码,然后按下C-Enter,Vim就会把这一行发送给IPython实例,IPython执行这行代码并在终端中打印结果,就像你自己复制粘贴了一样。
(使用Matlab的人都知道这个功能有多实用。)
2 个回答
1
我感觉IPython现在使用或者已经转向使用zmq作为消息传递的协议。至少在我运行0.11版本的时候,zmq的支持是可用的。
使用zmq(零消息队列),整个消息传递的问题就大大简化了,让你的Vim实例通过zmq进行通信应该不是很难(zmq可以在很多不同的平台上使用)。
可以看看这个博客:http://ipythonzmq.blogspot.com/,还有当然:http://www.zeromq.org/
1
几个月前,Paul Ivanov 用 IPython 的 zmq 接口做了这个。这个项目叫做 vim-ipython。