Python Jupyter笔记本定制服务
我想为Jupyter笔记本写一个新服务。但我很难弄清楚如何让它运行。我创建了一个类似于这里的默认服务的服务 我正试图在一个Docker容器中运行它,该容器由jupyter/base notebook构建而成。我已将Python Jupyter笔记本定制服务,python,jupyter-notebook,Python,Jupyter Notebook,我想为Jupyter笔记本写一个新服务。但我很难弄清楚如何让它运行。我创建了一个类似于这里的默认服务的服务 我正试图在一个Docker容器中运行它,该容器由jupyter/base notebook构建而成。我已将c.NotebookApp.extra_services=['TestHandler']添加到笔记本配置中,并将我的服务复制到/opt/conda/lib/python3.6/site packages/Notebook/services/test.py 当我启动笔记本服务器时,我收到
c.NotebookApp.extra_services=['TestHandler']
添加到笔记本配置中,并将我的服务复制到/opt/conda/lib/python3.6/site packages/Notebook/services/test.py
当我启动笔记本服务器时,我收到一个错误,上面写着ModuleNotFoundError:No module name'TestHandler'
,显然我的服务没有正确加载。不幸的是,我找不到任何关于如何在Jupyter笔记本中加载服务的文档
这是我的test.py
服务:
import json
from tornado import web
from ...base.handlers import APIHandler
class TestHandler(APIHandler):
@web.authenticated
def get(self):
res = { "foo": "bar" }
self.finish(json.dumps(res))
default_handlers = [
(r"/api/test", TestHandler),
]
该配置值需要具有
default\u handlers
属性的可导入模块列表。因此,您可以使用完整路径:
#假设您的'test.py'位于顶级包'mypackage'中`
c、 NotebookApp.extra_services=['mypackage.test']
或者,您可以直接构造一个模块:
导入系统
从类型导入模块类型
name='一些没有冲突的长屁股名称'
sys.modules[name]=ModuleType(name)#让导入机器找到它
sys.modules[name]。默认的_处理程序=[…]
c、 NotebookApp.extra_服务=[名称]