使您的代码单元格可执行

这一节描述了如何为你的书带来交互性。这允许用户运行代码并查看输出,而无需离开页面。交互性是由运行在公共MyBinder 服务上的内核提供的。

例如,单击此页上方的 --> Live Code 按钮,并运行下面的代码。

import numpy as np
import matplotlib.pyplot as plt
plt.ion()

x = np.arange(500)
y = np.random.randn(500)

fig, ax = plt.subplots()
ax.scatter(x, y, c=y, s=x)
<matplotlib.collections.PathCollection at 0x7faea95149a0>
../_images/thebe_1_1.png

警告

这是一个实验性的特性,在未来可能会发生变化或意想不到的效果。

激活 Thebe

为了使您的内容具有交互性,而不要求读者离开当前页面,您可以使用一个名为 Thebe 的项目。这为您提供了一个 Live Code 按钮,单击该按钮时,将把每个代码单元格转换为可以编辑的交互式单元格。它还向每个单元添加一个 “run” 按钮,并连接到在云中运行的 Binder 内核。

要将 Thebe 按钮添加到你的 Jupyter Book 页面,采取以下步骤:

  1. 首先,添加通用启动按钮配置。这使得 thebe/ 可以为您的内容使用正确的环境和文件路径。

  2. 激活 Thebe 集成与以下配置:

    launch_buttons:
      thebe                  : true
    

配置 Thebe

此外,您还可以配置 Binder 设置,这些设置用于为 Thebe 提供运行代码的内核。它们使用与上面描述的 BinderHub 交互按钮相同的配置字段。有关如何做到这一点的信息,请参见 BinderHub 启动按钮文档

在初始化 Thebe 时预执行单元格

有时,您希望在请求内核时立即运行一些代码单元格。这可能是您随后对用户隐藏的代码,以便缩小用户与之交互的焦点。这是可以通过使用 Jupyter Notebook 的单元格标签

将标签 thebe-init 添加到任何代码单元格将导致 Thebe 在接收到内核后运行这个单元格。任何后续 Thebe 单元格都可以访问相同的环境(例如,在初始化单元格中进行的任何模块导入)。

然后,您可以将其与诸如 hide-input 之类的东西配对,以便运行用户不会立即看到的初始化代码。例如,下面我们将初始化隐藏单元格中的一个变量,然后告诉另一个单元格打印该变量的输出。

my_hidden_variable = 'wow, it worked!'
# The variable for this is defined in the cell above!
print(my_hidden_variable)
wow, it worked!