IPython控制台

这个 IPython控制台 允许您执行命令,并在任意数量的全功能数据中输入、交互和可视化数据 IPython 口译员。每个控制台在单独的进程中执行,允许您运行脚本、中断执行、重新启动或终止shell,而不会影响其他控制台或Spyder本身,并且可以在干净的环境中轻松测试代码,而不会中断主会话。

Spyder IPython Console with code, inline plots, and the In prompt

连接到控制台

Spyder可以自己启动新的IPython实例,方法是在 Consoles 菜单 IPython Console 窗格菜单或其上下文菜单 (Ctrl-T 默认情况下),以充分利用Spyder的全套功能。每个控制台都实现了一个健壮的双进程IPython会话,其中轻量级的前端接口连接到完整的内核后端。您还可以通过连接到外部本地和远程内核,包括由QtConsole会话或Jupyter笔记本管理的内核 Connect to an existing kernel 对话框在同一菜单下。外部内核仍然支持 many (虽然不是全部)Spyder的高级功能。

Spyder IPython Console as above, with the options menu open

连接到外部内核

注解

如果在Windows上连接到远程计算机 ssh ,您需要安装 paramiko 首先是python包, e.g. 具有 conda install paramiko 如果用水蟒。

要连接到外部内核,

  1. 在本地或远程主机上启动IPython内核(如果尚未运行)。

    • 如果使用Spyder 3.3.0或更高版本,则需要使用 python -m spyder_kernels.console (第一次安装后 spyder-kernels 在主机上 <conda/pip> install spyder-kernels

    • 如果使用Spyder 3.3.0之前的版本, ipython kernel 应该可以启动内核,尽管没有特定的Spyder特性。

  2. 复制连接文件 ({jupyter/runtime/dir/path}/kernel-{pid}.json )到您正在运行Spyder的机器(如果是远程的)或记下它的位置(如果是本地的)。

    你可以得到 {jupyter/runtime/dir/path} 通过执行 jupyter --runtime-dir 内核与Python环境相同。

  3. 点击 Connect to an existing kernelConsole 菜单或 IPython Console 窗格的“齿轮”菜单。

  4. 浏览或输入上一步骤中连接文件的路径。如果要连接到本地内核,请单击 Ok Spyder应该连接到内核;如果是远程内核,则继续执行最后一步。

    为了方便起见,内核ID号(例如。 1234 )在“连接文件路径”字段中输入的 {jupyter/runtime/dir/path}/kernal-{id}.json 在本地计算机上。

  5. 如果连接到远程内核 ssh ,选中相应的框并键入要连接到的完整主机名(在表单中 {username}@{hostname}:{port-number} ). 然后,输入 任何一个 {username} 的密码,或您的用户SSH密钥文件(通常是 .perm )(只需要一个连接),然后按 Ok .

    端口号是SSH守护程序所在的端口号 (sshd )正在运行,通常为22,除非您或您的管理员另行配置。

Connect to kernel dialog, requesting path and connection details

有关连接到远程IPython内核的更多技术细节,请参阅 Connecting to a remote kernel IPython食谱上的一页。记住在Spyder's中输入适当的细节 Connect to an existing kernel 对话框,而不是在客户端上启动新的前端 --existing .

支持的功能

任何 IPython Console 在Spyder中,内部或外部创建的支持其他功能,包括:

Spyder IPython Console, with a popup list of code completion guesses
  • 自动代码完成

  • 实时函数调用提示

  • 用于启动调试器和控制执行流的调试工具栏集成

Spyder创建的控制台支持更高级的功能,例如:

  • 这个 变量资源管理器 ,为许多内置和第三方Python对象提供基于GUI的编辑器

  • 与增强的IPython调试器的完全GUI集成, ipdb ,包括在任何文件中交互式地查看和设置正常断点和条件断点 Breakpoints 窗格中的执行流 编辑 (见 调试 更多详细信息,请参阅文档)

  • 这个 User Module Reloader ,可以自动重新导入修改后的包和文件

  • 如果 Inline 后端选择在 Preferences ‣ IPython console ‣ Graphics ‣ Graphics backend

有关IPython本身内置的特性、命令和功能的信息,请参阅 IPython documentation .

使用UMR重新加载更改的模块

在交互式会话中处理脚本和模块时,Python只从源文件加载一次模块,第一次加载 import -在第一次 import ,字节码 (.pyc 如果需要,将生成文件),并将导入的模块对象缓存在中 sys.modules . 如果您随后在没有Spyder的情况下在同一会话中的任何时候重新导入模块,则将使用此缓存的代码对象,即使其源代码也是如此 (.py{{w}} 文件)同时已更改。虽然对于最终产品代码很有效,但在交互工作时,例如在分析数据或测试您自己的模块时,这种行为通常是不受欢迎的。实际上,除了手动删除相关的模块之外,您将无法更新或修改任何已导入的模块 .pyc 或者完全重新启动控制台。

幸运的是,在Spyder中,有一个简单的解决方案: User Module Reloader (UMR)是Spyder独有的功能,启用后,只要修改和重新导入模块,就会自动在现有的IPython shell中重新加载模块,而不会有上述解决方法的缺点。更好的是,Spyder还装载了 %autoreload magic在默认情况下进入它启动的任何内核中,允许在保存修改后的文件后立即自动获取已导入模块中的更改,而无需任何其他用户操作。启用UMR后,您可以在同一个IPython解释器中测试复杂的应用程序,而不必每次进行更改时都重新启动它,从而节省了大量的手动繁琐工作和较长的重新启动时间。或者,如果您正在使用自己的自定义库一步一步地分析数据,则可以轻松地在后者中添加或调整函数,并查看前者反映的结果,而无需重新加载数据和重新运行整个脚本以将会话还原到同一点的开销。

UMR在默认情况下是启用的,它将在不需要用户干预的情况下自动执行其工作,尽管它会为您提供一个红色 Reloaded modules: 当列表在控制台中刷新时,会激活列表。如果需要,您可以在 Preferences ‣ Python interpreter ‣ User Module Reloader (UMR) .