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

如何在禁用IPython JS访问的自定义环境中,无需IPython.notebook.kernel.execute获取Jupyter Notebook当前URL?

无需IPython.notebook.kernel.execute获取Jupyter Notebook当前URL的方法

方法一:用ipywidgets传递URL信息

既然你的环境里输入小部件能正常工作,就可以通过前端JS拿到URL,再用widget的通信通道把值传给Python,完全避开IPython.notebook.kernel.execute的限制。

示例代码如下:

import ipywidgets as widgets
from IPython.display import display, Javascript

# 创建一个文本部件用来存储URL
url_widget = widgets.Text(description='当前URL:')
display(url_widget)

# 执行JS代码获取URL,再传给Python端的widget
display(Javascript("""
    // 获取带参数的完整页面URL
    const currentUrl = window.location.href;
    // 通过ipywidgets的通信通道把URL传递给Python侧
    const comm = IPython.notebook.kernel.comm_manager.get_comm('ipywidgets');
    comm.send({
        method: 'update',
        state: {'value': currentUrl},
        buffer_paths: []
    });
"""))

# 直接读取widget的值即可得到当前URL
print("获取到的URL:", url_widget.value)

方法二:通过环境变量传递(需修改环境配置)

如果你有权限调整自定义Jupyter环境的服务器配置,可以在启动kernel时,把当前笔记本的URL存入环境变量。比如服务器端获取请求的URL后,设置JUPYTER_NOTEBOOK_URL环境变量,然后在Python里直接读取:

import os
notebook_url = os.environ.get('JUPYTER_NOTEBOOK_URL')
print("获取到的URL:", notebook_url)

这个方法需要修改服务器侧的配置,适合能调整环境的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:33