2015-10-28 3 views
5

Я хочу, чтобы загрузить Jupyter Notebook Server Extension в локальном каталоге:Не удается найти модуль при загрузке расширения Jupyter сервера

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']" 

Но я получаю сообщение об ошибке «Без модуля с расширением». Есть ли что-то, что мне нужно сделать, чтобы получить Jupyter/python session для распознавания пути к модулю?

ответ

6

Фигурного это OUT-

получается, что вызов Jupyter Ноутбуков не importlib.import_module наборов пакетов = None, что означает, что относительные пути не будут работать.

В качестве обходного пути скрипт ~/.jupyter/jupyter_notebook_config.py может быть изменен, чтобы добавить локальный каталог в PYTHONPATH, чтобы модуль можно было найти.

import sys 
sys.path.append("C:\\Users\\eric\\server_ext") 

c.NotebookApp.server_extensions = [ 
    'extension' 
] 
Смежные вопросы