常见问题解答#
为什么 __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 的指针。
另请参见