Javascript D34.0+;导入Jupyter笔记本时不创建全局d3变量

Javascript D34.0+;导入Jupyter笔记本时不创建全局d3变量,javascript,d3.js,import,jupyter-notebook,Javascript,D3.js,Import,Jupyter Notebook,以下操作将失败,并出现JavaScriptReferenceError: from IPython.display import HTML, display display(HTML(""" <script src="https://d3js.org/d3.v4.js"></script> <script> console.log(d3); </script> """)) 从IPython.display导入HTML,显示 显示(HTML(“

以下操作将失败,并出现JavaScript
ReferenceError

from IPython.display import HTML, display

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

<script>
console.log(d3);
</script>
"""))
从IPython.display导入HTML,显示
显示(HTML(“”)
控制台日志(d3);
"""))
为什么呢

等效的D3版本3.x将起作用(尽管对我来说是第二次尝试):

从IPython.display导入HTML,显示
显示(HTML(“”)
控制台日志(d3);
"""))

这是我能找到的关于这个主题的最相关的问题/答案。

我这里介绍了一个解决方案:


基本上,您需要使用require.js。。这已经通过笔记本电脑自己的基础设施提供。

这是由于内部改变了
d3
自身的导出方式。3.
d3的x个分支版本
将其所有内部内容导出为全局变量();4.x分支版本不再这样做()。现在需要一个包管理器(比如
require.js
),而导出则通过管道传输到该管理器

详情请参阅

您现在应该做的是:

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

变量d3=要求('d3')

在那之后,一切都应该像预期的那样工作。

只是为了强调Jupyter已经使用require.js,并且没有require.config,上面的代码可能过于简化而无法工作(哪里需要find d3?)。无论如何,当我测试时,它会产生错误。
<script src="scripts/require.js"></script>
<script>var d3 = require('d3')</script>