连接到远程 IPython 实例

2024-02-14

我想在一台机器上运行 IPython 实例,并从不同的进程连接到它(通过 LAN)(以运行一些 python 命令)。我知道 zmq 是可能的:http://ipython.org/ipython-doc/dev/development/ipythonzmq.html http://ipython.org/ipython-doc/dev/development/ipythonzmq.html .

但是,我找不到有关如何执行此操作以及是否可能的文档。

任何帮助,将不胜感激!


EDIT

我希望能够连接到 IPython 内核实例并向其发送 python 命令。但是,这不应该通过图形工具(qtconsole)来完成,但我希望能够从不同的 python 脚本中连接到该内核实例...

e.g.

外部.py

somehow_connect_to_ipython_kernel_instance
instance.run_command("a=6")

如果你想在内核中运行另一个Python程序的代码,最简单的方法是连接一个阻塞内核管理器 https://github.com/ipython/ipython/blob/master/IPython/zmq/blockingkernelmanager.py。目前最好的例子是保罗·伊万诺夫(Paul Ivanov)vim-ipython https://github.com/ivanov/vim-ipython客户端,或者IPython自己的终端客户端 https://github.com/ipython/ipython/blob/master/IPython/frontend/terminal/console/interactiveshell.py.

要旨:

  • ipython 内核写入 JSON 连接文件,在IPYTHONDIR/profile_<name>/security/kernel-<id>.json,其中包含各种客户端连接和执行代码所需的信息。
  • KernelManager 是用于与内核通信(执行代码、接收结果等)的对象。 *

一个工作示例:

在外壳中,执行ipython kernel (or ipython qtconsole,如果您想与已运行的 GUI 共享内核):

$> ipython kernel
[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-6759.json

这写入了“kernel-6759.json”文件

然后您可以运行此 Python 代码片段来连接 KernelManager,并运行一些代码:

from IPython.lib.kernel import find_connection_file
from IPython.zmq.blockingkernelmanager import BlockingKernelManager

# this is a helper method for turning a fraction of a connection-file name
# into a full path.  If you already know the full path, you can just use that
cf = find_connection_file('6759')

km = BlockingKernelManager(connection_file=cf)
# load connection info and init communication
km.load_connection_file()
km.start_channels()

def run_cell(km, code):
    # now we can run code.  This is done on the shell channel
    shell = km.shell_channel
    print
    print "running:"
    print code

    # execution is immediate and async, returning a UUID
    msg_id = shell.execute(code)
    # get_msg can block for a reply
    reply = shell.get_msg()

    status = reply['content']['status']
    if status == 'ok':
        print 'succeeded!'
    elif status == 'error':
        print 'failed!'
        for line in reply['content']['traceback']:
            print line

run_cell(km, 'a=5')
run_cell(km, 'b=0')
run_cell(km, 'c=a/b')

运行的输出:

running:
a=5
succeeded!

running:
b=0
succeeded!

running:
c=a/b
failed!
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
/Users/minrk/<ipython-input-11-fb3f79bd285b> in <module>()
----> 1 c=a/b

ZeroDivisionError: integer division or modulo by zero

see the 消息规范 http://ipython.org/ipython-doc/dev/development/messaging.html有关如何解释回复的更多信息。如果相关,标准输出/错误和显示数据将会过来km.iopub_channel,并且您可以使用返回的 msg_idshell.execute()将输出与给定的执行关联起来。

PS:对于这些新功能的文档质量,我深表歉意。我们有很多写作要做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到远程 IPython 实例 的相关文章

随机推荐

  • Firebase 身份验证和数据库[重复]

    这个问题在这里已经有答案了 我对 Firebase 有疑问 我是新手 我想在登录时返回用户名 但该名称在数据库中 我只想返回名称 当然 与身份验证中找到的电子邮件一致 该电子邮件也在数据库中 我的想法是将数据库中的电子邮件与身份验证进行比较
  • 为什么在宏定义中使用 do { } while (0) ? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么 C C 宏中有时会出现无意义的 do while 和 if else 语句 https stackoverflow com questions 154136 why are there som
  • 如何仅捕获特定类型的异常而不中止序列

    RxJs 似乎没有变体catch 方法只允许捕获特定类型的异常 但很多时候我发现自己处于需要这样的操作员的情况 例如 成像我需要解析日志文件的每一行并打印解析的消息 日志文件的某些行可能已损坏 但我真的不在乎 只想为此类行输出 日志消息已损
  • 为什么我无法读取只读文件?

    我有这个方法应该读取文件 Read file s content private ArrayList
  • HTTPS 和 SSL 之间的区别

    HTTPS 和 SSL 有什么区别 我阅读了有关它们的内容并发现了以下内容 HTTPS HTTPS 是 HTTP 与 SSL TLS 的组合 这意味着 HTTPS 基本上是 HTTP 连接 它传递使用 SSL TLS 保护的数据 SSL S
  • luaopen函数

    我在lua示例代码中发现这些调用 luaopen table L luaopen io L luaopen string L luaopen math L 我在 lua 头文件中搜索 发现了 luaopen 的其他函数 LUALIB API
  • jQuery 添加类 onClick

    设置简单 我希望能够在 onClick event 触发时向按钮添加一个类 在本例中 我的问题是我还没有找到将按钮本身作为参数传递给函数的方法 我想做这样的事情
  • 如何在iphone sdk 3.0中实现后台任务的Daemon进程? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 与 qik com 或 ustrea
  • Angular 2 底部的粘性页脚

    我正在 Angular 2 中构建一个项目 我需要一个粘性页脚 它必须始终位于页面底部 而不是固定的 例子 http codepen io chriscoyier pen uwJjr http codepen io chriscoyier
  • 将文件读入包含空行的数组

    我正在使用此代码将文件加载到 bash 中的数组中 IFS n read d r a LINES lt PAR1 但不幸的是 这段代码会跳过空行 我尝试了下一个代码 IFS n read r a LINES lt PAR1 但这个变体只加载
  • 为什么我们需要在 tomcatlogging.properties 中写入两次处理程序?

    From docs http tomcat apache org tomcat 7 0 doc logging html handlers 1catalina org apache juli FileHandler 2localhost o
  • 安全通道支持 WSL 中发生错误[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 wsl install Windows Subsystem for Linux is already installed An err
  • 过滤掉配置文件结果中的文件

    Is there any way to filter out some files from collecting CPU profiles in or just filter them out in CPU profile results
  • 如何在网卡上发送pcap文件包? [复制]

    这个问题在这里已经有答案了 我有一些网络流量捕获的 pcap 文件 并希望在 NIC 上发送其数据包 是否可以 有什么应用程序可以做到这一点吗 您应该能够使用某种重播应用程序 例如tc预播放 http tcpreplay synfin ne
  • 如何删除 input[type="date"] 的占位符文本?

    我有一个input type date 具有最小 最大范围 我想要实现的是隐藏自 dd mm yyyy 起以任何语言显示的占位符文本 到目前为止所尝试的是添加以下 CSS input type date in range webkit da
  • SQL注入保护-单引号[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中防止 SQL 注入的最佳方法 https stackoverflow com questions 60174 best way to prevent sql injection in php
  • 来自电子邮件的 Google 帐户图片

    是否可以像 Gravatar 图像一样检索 Google 帐户个人资料图像 我认为 如果找不到头像 故障转移到 Google 图像会非常方便 如果您能够获取 Google user id 则可以检索 Google 图片 https stac
  • WebApi 异步与同步

    我是 Net WebApi 的新手 因为我知道使用异步 API 而不是同步 API 更好 但有什么区别呢 如果 API 是同步的并且已从客户端调用 并且从另一个客户端调用 正如我所检查的 不会发生中断 并且两个调用将同时进行 那么 将其设为
  • “utf-8”编解码器无法解码位置 4 中的字节 0xe9:数据意外结束

    我对这种语言很陌生 在通过 python 发送电子邮件时遇到了一些麻烦 我的代码如下所示 import smtplib server smtplib SMTP smtp gmail com 587 server starttls serve
  • 连接到远程 IPython 实例

    我想在一台机器上运行 IPython 实例 并从不同的进程连接到它 通过 LAN 以运行一些 python 命令 我知道 zmq 是可能的 http ipython org ipython doc dev development ipyth