IPython 控制台#
IPython 控制台允许您在 IPython 解释器中执行命令并与数据交互。

要启动新的 IPython 实例,请前往控制台菜单下的新建控制台(默认设置),或者在控制台获得焦点时使用键盘快捷键 Ctrl-T(macOS 上为 Cmd-T)。

在同一菜单中,您可以使用中断内核停止当前正在执行的代码,使用移除所有变量清除控制台的命名空间,或使用重启内核重新启动一个全新的控制台。由于每个控制台都在独立的进程中执行,这不会影响您打开的其他控制台,并且您将能够在一个干净的环境中轻松测试您的代码,而不会干扰您的主会话。
支持的功能#
任何 IPython 控制台,无论是外部的还是由 Spyder 启动的,都支持:
自动代码补全
实时函数提示
与增强型 Spyder 调试器的完整 GUI 集成。
变量管理器,提供针对许多内置和第三方 Python 对象的基于 GUI 的编辑器。
在 Spyder 的图窗面板中显示 Matplotlib 图形,前提是在 下选择了内联后端;如果图窗面板的选项菜单中未取消勾选静默内联绘图,则在控制台中内联显示。

有关 IPython 本身内置的功能、命令和能力的信息,请参阅 IPython 文档。
特殊控制台#
Spyder 还支持几种类型的专用控制台。Sympy 控制台允许您在 Spyder 内部直接创建和显示符号数学表达式。Cython 控制台允许您使用 Cython 语言加速代码并直接从 Python 调用 C 函数。最后,Pylab 控制台默认加载常见的 Numpy 和 Matplotlib 函数;虽然此功能已弃用且强烈不建议用于新代码,但如果遗留脚本需要,仍可使用。

使用外部内核#
您可以通过控制台菜单下的连接到现有内核对话框,连接到外部本地和远程内核(包括由 Jupyter Notebook 或 QtConsole 管理的内核)。要使此功能正常工作,必须在运行外部内核的环境或机器中安装兼容版本的 spyder-kernels
包。

连接到本地内核#
要连接到已在运行的本地内核(例如由 Jupyter notebook 启动的内核),
在您想要连接的 notebook 或控制台中运行
%connect_info
,并复制其内核连接文件的名称,该名称显示在jupyter <app> --existing
之后。在 Spyder 中,点击控制台菜单中的连接到现有内核,并粘贴上一步中的连接文件名称。
为了方便,在连接文件路径字段中输入的内核 ID 号(例如
1234
)将扩展为文件的完整路径,即jupyter/runtime/dir/path/kernal-id.json
。点击确定连接到内核。
连接到远程内核#
要连接到远程机器上的内核,
如果远程主机上没有运行 Spyder 内核,请使用
python -m spyder_kernels.console
启动一个。将内核的连接文件(
jupyter/runtime/dir/path/kernel-pid.json
)复制到您正在运行 Spyder 的机器上。您可以通过在与内核相同的 Python 环境中执行
jupyter --runtime-dir
来获取jupyter/runtime/dir/path
。通常,您要查找的连接文件将是此目录中最新的文件之一,与您启动外部内核的时间相对应。点击控制台菜单中的连接到现有内核,然后浏览或输入上一步中的连接文件路径。
为了方便,如果在连接文件路径字段中输入了内核 ID 号(例如
1234
),则该路径将扩展为本地机器上的jupyter/runtime/dir/path/kernal-id.json
,前提是您已将连接文件复制到本地。勾选这是远程内核(通过 SSH)复选框,并输入远程机器的主机名或 IP 地址、用户名和要连接的端口。然后,输入远程机器上
username
的密码,*或者*浏览到已注册的 SSH 密钥文件(通常在本地机器主文件夹的.ssh
目录中,通常名为id_rsa
或类似名称);只需其中之一即可连接。如果您勾选保存连接设置,这些详细信息将被记住,并在下次打开对话框时自动为您填充。请注意,端口是远程机器上 SSH 守护进程(
sshd
)正在监听的端口号,通常为 22,除非您或您的管理员另有配置。点击确定连接到远程内核
有关连接到远程内核的更多技术细节,请参阅 IPython Cookbook 中的连接到远程内核页面。
重新加载已更改的模块#
在交互式会话中工作时,Python 只会在第一次导入模块时,从其源文件加载一次。
Spyder 的用户模块重新加载器(UMR)会在模块被修改和重新导入时,自动在您现有的 IPython 控制台中重新加载它们。启用 UMR 后,您可以在不重启内核的情况下测试代码更改。

UMR 默认启用,它会在激活时在控制台中显示红色的 Reloaded modules:
消息,列出已刷新的文件。如果需要,您可以在 下开启或关闭它,并防止特定模块被重新加载。
