常见问题解答#

为什么 __file__ 未定义?我可以使用什么?#

Python 在运行脚本时定义的全局 __file__ 变量在 Jupyter 笔记本中未定义。由于 Sphinx-Gallery 支持笔记本样式的示例,并且也导出到 Jupyter 笔记本,因此我们一致决定在执行示例脚本时将此变量排除在作用域之外。

与其使用 __file__,不如使用 os.getcwd() 获取文件所在的目录。Sphinx-Gallery 在其源目录中执行示例脚本。

为什么我得到 Matplotlib 函数的文本输出?#

Sphinx-Gallery 的输出捕获行为在 Sphinx-Gallery v0.5.0 中发生了变化。在 v0.5.0 之前,只捕获了定向到标准输出的数据(例如,只有 Matplotlib 图形)。在 v0.5.0 中,添加了配置 'capture_repr' (控制捕获的输出)。此配置允许在每个代码块的最后一个语句是表达式时捕获其“表示”。此新配置的默认设置,'capture_repr': ('_repr_html_', '__repr__'),首先尝试捕获 '_repr_html_',如果不存在,则捕获 '__repr__'。这意味着如果最后一个语句是 Matplotlib 函数(通常返回一个值),则该值的表示也将被捕获。

为了防止 Matplotlib 函数调用输出文本以及图形,您可以将最后一个绘图函数分配给一个临时变量(例如,_ = matplotlib.pyploy.plot())或将 matplotlib.pyplot.show() 添加到代码块的末尾(请参阅 控制捕获的输出)。或者,您可以将 capture_repr 设置为一个空元组 ('capture_repr': ()),这将模仿 v0.5.0 之前 Sphinx-Gallery 的行为。这也会阻止您获得 v0.5.0 之前不会发生的任何其他不需要的输出。

为什么我的缩略图外观发生了变化?#

缩略图的 DOM 结构已重构,以便使它们具有响应性并在 css 网格上对齐。这些更改可能会使您现有的自定义 css 过时。您可以阅读我们 自定义 css 缩略图迁移指南,了解有关如何更新 css 的指针。

另请参见

Github PR #906