2016-09-05 1 views
4

Ниже будет выпадать с JavaScript ReferenceError:D3 4.0+ не создает глобальную переменную d3 при импорте в Jupyter Notebook

from IPython.display import HTML, display 

display(HTML(""" 
<script src="https://d3js.org/d3.v4.js"></script> 

<script> 
console.log(d3); 
</script> 
""")) 

Почему?

Эквивалент D3 версии 3.x будет работать (хотя и со второй попытки, для меня):

from IPython.display import HTML, display 

display(HTML(""" 
<script src="https://d3js.org/d3.v3.js"></script> 

<script> 
console.log(d3); 
</script> 
""")) 

This самый актуальный вопрос/ответ, который я мог найти на эту тему.

ответ

1

Это, как оказалось, связано с внутренним изменением способа доставки товара d3. Версии ветвей 3.x d3 экспортировали все их внутренние компоненты в качестве глобальных переменных (source code); Версия версии 4.x больше не делает этого (source code). Вместо этого вместо этого ожидается менеджер пакетов (например, require.js), и вместо этого экспорт будет отправлен на него.

Более подробная информация приведена в документе requisite GitHub issue.

Что вы должны сделать, вместо того, чтобы сейчас что-то вроде:

<script src="scripts/require.js"></script> 
<script>var d3 = require('d3')</script> 

После этого все должно работать, как ожидалось.

+0

Чтобы подчеркнуть тот факт, что Jupyter уже использует require.js, и без require.config, приведенный выше код может быть слишком упрощен для работы (где требуется найти d3?). В любом случае это вызывает ошибки при тестировании. – PaulDong