Организуйте свой код
В корневой папке ноутбука создать пакет для вашего нового виджета. Например, вы можете использовать следующую структуру каталогов:
helloworld/
__init__.py
helloworld_widget.py
helloworldjs/
helloworld.view.js
css/
helloworld.css
программы на стороне сервера
Внутри HelloWorld/helloworld_widget.py, поместите класс Python:
from ipywidgets import widgets
from traitlets import Unicode
class HelloWorldWidget(widgets.DOMWidget):
_view_module = Unicode("nbextensions/helloworld/helloworld_view", sync=True)
_view_name = Unicode('HelloWorldView', sync=True)
Вот именно с вашим код python.
Создать представление Javascript
В HelloWorld/helloworldjs/helloworld.view.js программировать стороне клиента:
define(["nbextensions/widgets/widgets/js/widget"], function(widget) {
var HelloWorldView = widget.DOMWidgetView.extend({
render: function(){
this.$el.text("Hello world");
},
});
return {HelloWorldView: HelloWorldView}
});
Простой, не так ли? И последнее, но не в последнюю очередь ...
Развертывание на стороне клиента в папку расширений ноутбука
Чтобы сделать это, Вы можете запрограммировать функцию в инициализации .py и выполнить его внутри ноутбука каждый раз, когда ваш измените что-то в своем представлении Javascript.
Я использую этот очень похож на следующее:
def notebook_install(overwrite=True, user=True):
import os
from notebook import install_nbextension
from notebook.services.config import ConfigManager
from IPython.display import display, Javascript
js_path = os.path.join(os.path.dirname(__file__), 'helloworldjs')
install_nbextension(js_path, overwrite=overwrite,
symlink=False, verbose=0, user=user)
Теперь вы должны быть в состоянии выполнить следующие действия в записной книжке:
from helloworld.helloworld_widget import HelloWorldWidget
hello = HellowWorldWidget()
hello
Enjoy!
При чтении внимательно эта статья также должна помочь: https://carreau.gitbooks.io/jupyter-book/content/notebook-extensions.html