介绍 Spyder,科学 PYthon 开发环境

作者:Joey Bernard

如果您想使用 Anaconda 进行科学项目,首先要考虑的是 spyder 包,它包含在基本的 Anaconda 安装中。Spyder 是 Scientific PYthon Development EnviRonment(科学 Python 开发环境)的缩写。可以将其视为 Python 中用于科学编程的 IDE。

您可能需要最新的可用版本,因为它正处于相当持续的开发中。您可以使用以下命令确保您的整个 Anaconda 安装是最新的


conda update anaconda

有两种启动 spyder 的方法。如果您使用的是 Anaconda Navigator,您可以直接单击 spyder 图标。

图 1. 您可以直接从 Anaconda Navigator 启动 spyder。

如果您打开了终端窗口,则只需键入 spyder 并按回车键即可启动 spyder。您可能会看到一个弹出窗口,提示 spyder 不是最新版本,这仅仅是因为 Anaconda 中的版本落后几个修订版本。

启动 spyder 后,您应该会在左侧看到一个打开的编辑器窗口,在右下方看到一个 Python 控制台窗口。

图 2. 启动 spyder 会为您提供一个空的编辑器窗口,以便开始您的第一个项目。

右上侧用于帮助浏览器、变量资源管理器和文件资源管理器。与大多数 IDE 一样,您可以更改哪些窗格可见及其在窗口中的布局。

您可以立即在控制台窗口中使用 spyder 开始工作。spyder 中的新默认设置是提供一个 IPython 控制台,您可以使用它直接与 Python 引擎交互。它的工作方式与在命令行上的工作方式基本相同。最大的区别在于 spyder 可以检查 Python 引擎的内容,并且可以执行诸如在变量资源管理器中显示变量及其内容之类的操作。

图 3. 您可以直接与 IPython 控制台交互。

虽然这对于较小的代码片段来说很好,但您很可能会最终处理更大的代码块。在这种情况下,您可以使用编辑器编写函数和更大的代码块。为了执行此 Python 代码,您可以单击绿色箭头图标,单击菜单项“运行→运行”,或按 F5 键。同样,结果可以从变量资源管理器中获得。如果单击蓝色箭头图标(或单击菜单项“调试→调试”),您的代码将在 IPython 调试器中运行,这将允许您一次单步执行一行代码。

图 4. Spyder 包含一个前端,允许您与 ipdb(IPython 调试器)交互。

您可以通过向代码添加断点来获得对调试的更多控制。为此,请双击编辑器窗格中的左侧装订线。您应该看到为插入的每个断点添加了一个点。

有几种工具可用于处理代码和算法质量。您可能需要从静态代码分析开始。通过单击“Source→Run static code analysis”(源→运行静态代码分析)菜单项或按 F8 键来运行它。这将运行分析,并将结果显示在一个新窗格中,该窗格将在右上侧窗格中弹出。

图 5. 您可以运行静态代码分析以检查语法错误。

结果分为约定中断、重构建议、语法警告和代码中的实际错误。这将捕获最明显的错误。

一旦您有了实际工作的代码,下一步就是检查代码的性能。Spyder 包含一个前端,使您可以访问标准 Python 库中包含的 profiler。通过单击“Run→Profile”(运行→性能分析)菜单项或按 F10 键来启动它。完成后,将在相同的左上角位置出现一个新窗格。

图 6. 当您运行 profiler 时,您将获得一个显示每个函数中使用了多少时间的显示。

不幸的是,默认的 profiler 仅下降到函数级别,这可能不够精细。如果是这种情况,您可以深入研究 spyder 的强大功能之一:其插件架构。Anaconda 存储库中已经包含几个插件。使用以下命令安装 line profiler 插件


conda install -c spyder-ide spyder-line-profiler

接下来,您可以将函数装饰器 @profile 添加到任何您想要探索的函数,然后通过单击“Run→Profile line by line”(运行→逐行性能分析)菜单项或按 Shift-F10 键来启动 line profiler。您将在新的输出窗格中看到结果。

图 7. 您可以使用 line profiler 更详细地了解函数的效率。

您可以查看每行花费了多少时间,包括每次命中和整个程序运行的总时间。这样,您可以专注于代码中最昂贵的部分,以获得更好的性能。

除了优化时间外,您还需要考虑优化的另一个参数是内存使用量。随着越来越多的研究关注大数据问题,这一点变得越来越重要。在这些情况下,使用以下命令安装 spyder 的内存 profiler 插件


conda install -c spyder-ide spyder-memory-profiler

安装插件后,您可以像使用 line profiler 一样添加装饰器 @profile。通过单击“Run→Profile memory line by line”(运行→逐行内存性能分析)或按 Ctrl-Shift-F10 键来启动内存 profiler。另一个窗格将出现在右上侧,您可以在其中查看每行代码后内存使用量的变化。这将使您能够找出哪些代码行是浪费的,以及在哪里集中精力来提高性能。

图 8. Spyder 有一个内存 profiler 插件,允许您找出如何优化内存使用量。

对于科学计算,我想看的最后一项是数据可视化能力。人类通常可以通过看到数据的外观来做出直观的飞跃。spyder 的默认设置是在 IPython 控制台中内联绘制图形。

图 9. 默认情况下,spyder 允许您在 IPython 控制台中生成绘图。

这对于快速浏览数据来说很好,但它不是最容易查看的。如果您单击“Tools→Preferences”(工具→首选项),您将看到一个新窗口,您可以在其中更改此行为,并将绘图显示在不同的窗口中。

图 10. 您可以更改有关如何生成和显示绘图的首选项。

如果您重新运行代码,您现在将在新窗口中获得绘图。这允许您玩转绘图显示,甚至保存最终图像。如果您更改了首选项中关于绘图的设置,您可能需要重新启动 IPython 引擎以获取新的首选项。

图 11. 在自己的窗口中生成绘图可以实现更多交互。

而且,这应该足以开始在您的计算科学问题中使用 spyder。在我的下一篇文章中,我计划研究 Anaconda 附带的 Jupyter 版本,看看如何有效地使用它。这两种工具都很好,但它们适合略有不同的生态位。

加载 Disqus 评论