使你的代码单元可执行

使你的代码单元可执行#

本节描述如何为你的书籍带来交互性。这允许用户在不离开页面的情况下运行代码并查看输出。交互性由在公共 MyBinder 服务上运行的内核提供。

例如,点击本页上方的 –> 实时代码 按钮,然后运行下面的代码。

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)
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 import numpy as np
      2 import matplotlib.pyplot as plt
      3 plt.ion()

ModuleNotFoundError: No module named 'numpy'

Warning

这是一个实验性功能,未来可能会发生变化或出现意外行为。

激活 Thebe#

要使你的内容具有交互性而不要求读者离开当前页面,你可以使用一个名为 Thebe 的项目。 这为你提供了一个 实时代码 按钮,点击后会将每个代码单元转换为 可交互 单元,可以进行编辑。 它还会为每个单元格添加一个“运行”按钮,并连接到云端运行的 Binder 内核。

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

  1. 首先,添加常见的启动按钮配置。这使得 thebe/ 可以使用正确的环境和文件路径来处理你的内容。

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

    launch_buttons:
      thebe                  : true
    

配置 Thebe#

此外,你可以配置用于为 Thebe 提供内核运行的 Binder 设置。 这些设置使用与上述 BinderHub 交互按钮相同的配置字段。 有关如何执行此操作的信息,请参阅 BinderHub 启动按钮文档

当 Thebe 初始化时预执行单元格#

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

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

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

Hide code cell source
my_hidden_variable = '哇,成功了!'
# 此变量在上述单元格中定义!
print(my_hidden_variable)
哇,成功了!