IPython/Jupyter Установка расширений

У меня проблемы с установкой расширений в IPython. Проблема в том, что я не могу автоматически загружать расширения, я следовал инструкциям на странице github, но это просто не работает. В соответствии с домашней страницей мне нужно изменить файл custom.js, добавив несколько строк. Я хочу установить расширения codefolding, hide_input_all и runtools. Вот как выглядит мой файл custom.js:

// activate extensions only after Notebook is initialized
require(["base/js/events"], function (events) {
$([IPython.events]).on("app_initialized.NotebookApp", function () {
 /* load your extension here */
 IPython.load_extensions('usability/codefolding/codefolding')
 IPython.load_extensions('usability/runtools/runtools')
 require(['/static/custom/hide_input_all.js'])
 });
});

Расширения работают хорошо, если я вызываю их вручную, например, если я набираю

%%javascript
IPython.load_extensions('usability/runtools/runtools/main');

инструменты запуска появляются и работают отлично, но я хочу, чтобы расширения загружались автоматически, а не вызывали их каждый раз вручную. Может ли кто-нибудь сказать мне, где моя ошибка?


person Isak Baizley    schedule 23.03.2015    source источник
comment
В вашем ручном коде есть дополнительный /main, которого нет в вашем custom.js - может ли это иметь значение?   -  person Thomas K    schedule 25.03.2015
comment
Этот вопрос похож на: stackoverflow.com/questions/32046241/   -  person Vasco    schedule 18.11.2015


Ответы (1)


Синтаксис немного изменился. В настоящее время $ может не определяться к моменту загрузки вашего custom.js, поэтому вместо чего-то вроде

$([IPython.events]).on("app_initialized.NotebookApp", function () {
    IPython.load_extensions("whatever");
});

вы должны сделать что-то вроде

require(['base/js/namespace', 'base/js/events'], function(IPython, events) {
    events.on('app_initialized.NotebookApp', function(){
        IPython.load_extensions("whatever");
    })
});

с соответствующими изменениями фигурных и круглых скобок. Для меня первое будет работать чаще, чем нет, но, конечно, не всегда; это терпит неудачу, возможно, ~ 1/3 времени.

Если это не поможет вам, откройте Инструменты разработчика (или что-то, что имеет отношение к вашему браузеру) и посмотрите на консоль javascript на наличие ошибок. Это поможет понять, что идет не так.

person Mike    schedule 04.04.2015