如何将参数从 Jupyter 后端传递到前端扩展

How to pass a parameter from the Jupyter backend to a frontend extension

我目前有一个值作为环境变量存储在 jupyter 服务器所在的环境中 运行。我想以某种方式将该值传递给前端扩展。它不必实时读取环境变量,我只需要在启动时使用变量的值就可以了。有没有一种规范的方法可以在启动时将参数传递给前端扩展?希望能提供从后端设置参数和从前端访问参数的示例。

[更新]

我已经发布了适用于 nbextentions 的解决方案,但我似乎无法找到 labextensions(打字稿)的等效模式,如有任何帮助,我们将不胜感激。

我可以通过将以下代码添加到我的 jupter_notebook_config.py

来做到这一点
from notebook.services.config import ConfigManager


cm = ConfigManager()
cm.update('notebook', {'variable_being_set': value})

然后我在 main.js

的扩展中定义了参数
    // define default values for config parameters
    var params = {
        variable_being_set : 'default'
    };

    // to be called once config is loaded, this updates default config vals
    // with the ones specified by the server's config file
    var update_params = function() {
        var config = Jupyter.notebook.config;
        for (var key in params) {
            if (config.data.hasOwnProperty(key) ){
                params[key] = config.data[key];
            }
        }
    };

我的 main.yaml

中也声明了参数
Parameters:
- name: variable_being_set
  description: ...
  input_type: text
  default: `default_value`

这需要一些试验和错误才能找到,因为关于 ConfigManager class 和 none 的文档很少,它有一个端到端的示例。