加载 Jupyter 服务器扩展时找不到模块
Can't find module when loading Jupyter Server Extension
我想在本地目录中加载 Jupyter Notebook Server Extension:
server_ext/
|__ __init__.py
|__ extension.py
extension.py
from notebook.utils import url_path_join
from notebook.base.handlers import IPythonHandler
class HelloWorldHandler(IPythonHandler):
def get(self):
self.finish('Hello, world!')
def load_jupyter_server_extension(nbapp):
"""
nbapp is istance of Jupyter.notebook.notebookapp.NotebookApp
nbapp.web_app is isntance of tornado.web.Application - can register new tornado.web.RequestHandlers
to extend API backend.
"""
nbapp.log.info('My Extension Loaded')
web_app = nbapp.web_app
host_pattern = '.*$'
route_pattern = url_path_join(web_app.settings['base_url'], '/hello')
web_app.add_handlers(host_pattern, [(route_pattern, HelloWorldHandler)])
我 运行 从包含 server_ext 的目录中执行以下命令:
jupyter notebook --NotebookApp.server_extensions="['server_ext.extension']"
但是我收到错误 "No module named extension"。我需要做些什么才能让 Jupyter/python 会话识别模块的路径吗?
想通了 -
原来Jupyter Notebook对importlib.import_module的调用设置了package=None,这意味着相对路径将不起作用
作为解决方法,可以修改 ~/.jupyter/jupyter_notebook_config.py 脚本以将您的本地目录附加到 PYTHONPATH,以便可以找到该模块。
import sys
sys.path.append("C:\Users\eric\server_ext")
c.NotebookApp.server_extensions = [
'extension'
]
我想在本地目录中加载 Jupyter Notebook Server Extension:
server_ext/
|__ __init__.py
|__ extension.py
extension.py
from notebook.utils import url_path_join
from notebook.base.handlers import IPythonHandler
class HelloWorldHandler(IPythonHandler):
def get(self):
self.finish('Hello, world!')
def load_jupyter_server_extension(nbapp):
"""
nbapp is istance of Jupyter.notebook.notebookapp.NotebookApp
nbapp.web_app is isntance of tornado.web.Application - can register new tornado.web.RequestHandlers
to extend API backend.
"""
nbapp.log.info('My Extension Loaded')
web_app = nbapp.web_app
host_pattern = '.*$'
route_pattern = url_path_join(web_app.settings['base_url'], '/hello')
web_app.add_handlers(host_pattern, [(route_pattern, HelloWorldHandler)])
我 运行 从包含 server_ext 的目录中执行以下命令:
jupyter notebook --NotebookApp.server_extensions="['server_ext.extension']"
但是我收到错误 "No module named extension"。我需要做些什么才能让 Jupyter/python 会话识别模块的路径吗?
想通了 -
原来Jupyter Notebook对importlib.import_module的调用设置了package=None,这意味着相对路径将不起作用
作为解决方法,可以修改 ~/.jupyter/jupyter_notebook_config.py 脚本以将您的本地目录附加到 PYTHONPATH,以便可以找到该模块。
import sys
sys.path.append("C:\Users\eric\server_ext")
c.NotebookApp.server_extensions = [
'extension'
]