You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无外网的Jupyter Notebook中本地引用d3 JavaScript库

在Jupyter Notebook中引用本地第三方JavaScript库(以d3为例)

我之前也碰到过一模一样的情况——AWS节点没外网权限,只能靠本地JS库跑可视化,一开始用require.config也踩了坑,后来摸索出几个靠谱的解决方法,分享给你:

第一步:先把文件位置搞对

首先得确认你的Jupyter Notebook当前的工作目录,不然路径写得再对都是白搭。在代码单元格里跑这段Python代码:

import os
print(os.getcwd())

把你SCP上来的d3.min.js放到这个输出的目录里(嫌乱的话也可以建个js/子目录专门放JS文件,记得后面路径对应上就行)。可以用!ls命令验证文件是否存在:

!ls | grep d3.min.js

如果能看到文件名,说明文件位置没问题。

方法一:用require.js正确加载(推荐)

你之前的代码只配置了路径,但没实际加载并调用d3,而且路径写法可以更严谨一点。试试在JavaScript单元格里写这段代码:

%%javascript
// 配置require路径,注意可以省略.js后缀,require会自动补全
require.config({
  paths: {
    d3: './d3.min'  // 如果放在js子目录里就写成'./js/d3.min'
  }
});

// 实际加载d3并在回调里使用
require(['d3'], function(d3) {
  // 先在控制台打印版本,确认加载成功
  console.log("D3加载成功!版本:", d3.version);
  
  // 举个简单的测试例子,创建一个红色圆形
  var svg = d3.select("body")
              .append("svg")
              .attr("width", 200)
              .attr("height", 200);
  
  svg.append("circle")
     .attr("cx", 100)
     .attr("cy", 100)
     .attr("r", 50)
     .style("fill", "firebrick");
});

运行这个单元格后,打开浏览器控制台(F12),如果能看到版本号,而且页面上出现红色圆形,就说明成功了。

方法二:直接插入script标签(更直观)

如果require.js的配置还是有问题,或者你不想折腾它,可以直接手动创建script标签加载本地文件,这种方式绕开了require的配置逻辑,更直接:

%%javascript
// 创建script元素
var script = document.createElement('script');
// 设置src为本地文件路径,对应你的实际位置
script.src = './d3.min.js';
// 加载完成后执行回调
script.onload = function() {
  console.log("D3通过script标签加载成功!版本:", d3.version);
  // 这里写你的d3业务代码
  var svg = d3.select("body")
              .append("svg")
              .attr("width", 200)
              .attr("height", 200);
  
  svg.append("rect")
     .attr("x", 50)
     .attr("y", 50)
     .attr("width", 100)
     .attr("height", 100)
     .style("fill", "steelblue");
};
// 把script标签加到页面头部
document.head.appendChild(script);

常见问题排查

  • 404错误:如果浏览器Network标签里显示d3.min.js请求失败(状态码404),说明路径写错了。检查文件是否在你指定的路径下,或者调整路径写法(比如加不加./)。
  • 缓存问题:有时候浏览器会缓存旧的资源,导致新文件没加载,试试按Ctrl+F5强制刷新页面。
  • 全局复用配置:如果你想让所有Notebook都能引用这个库,可以创建~/.jupyter/custom/目录,把d3.min.js放进去,然后重启Jupyter服务,之后路径可以写成'/static/custom/d3.min',不用每次都在Notebook里配置。

内容的提问来源于stack exchange,提问作者Jane Wayne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:47:21