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

如何在F# Jupyter Notebook中引用其他Notebook的函数?

在F# Jupyter Notebook中引用另一个Notebook函数的可行方案

当然有办法啦!在F# Jupyter Notebook里调用另一个Notebook的函数,其实可以借助F#的脚本特性来实现,下面给你两种实用的方案:

方案一:导出为.fsx脚本后用#load加载(最推荐)

这是最简单可靠的方式,利用F#原生的脚本加载机制:

  • 先打开你要引用的目标F# Notebook,在Jupyter界面里点击「File」→「Download as」→「F# Script (.fsx)」,把它导出成F#脚本文件。
  • 将导出的.fsx文件放到当前Notebook所在的同一目录下(如果不在同一目录,要写完整的文件路径)。
  • 在当前Notebook的单元格里输入:
    #load "TargetNotebook.fsx"
    
    运行这个单元格后,目标Notebook里定义的所有函数、类型、变量就都能在当前Notebook里直接调用了。
  • 举个实际例子:如果目标Notebook里写了let multiply x y = x * y,加载后你直接写multiply 4 5就能得到20。

方案二:直接读取.ipynb文件执行(适合不想导出的场景)

如果你不想导出脚本,也可以直接解析Jupyter Notebook的JSON结构,提取代码块执行:

  • 首先需要安装Newtonsoft.Json包来解析Notebook的JSON内容,在当前Notebook里运行:
    #r "nuget: Newtonsoft.Json"
    
  • 然后用下面的代码加载目标Notebook的代码:
    open System.IO
    open Newtonsoft.Json
    
    // 定义类型匹配Notebook的JSON结构
    type NotebookCell = { cell_type: string; source: string list }
    type Notebook = { cells: NotebookCell list }
    
    let loadNotebookCode notebookPath =
        let jsonContent = File.ReadAllText(notebookPath)
        let notebook = JsonConvert.DeserializeObject<Notebook>(jsonContent)
        // 提取所有代码单元格的内容并拼接
        let code = 
            notebook.cells
            |> List.filter (fun cell -> cell.cell_type = "code")
            |> List.collect (fun cell -> cell.source)
            |> String.concat "\n"
        // 执行提取到的代码
        fsi.EvalInteraction(code)
    
    // 调用函数加载目标Notebook
    loadNotebookCode "./YourOtherNotebook.ipynb"
    
  • 注意:这个方法要确保目标Notebook里的代码没有依赖当前环境缺失的资源,否则可能会抛出运行时错误。

小提示

如果两个Notebook存在依赖冲突,或者目标Notebook里有很多无关代码,优先选方案一,导出脚本时可以删掉不需要的单元格,让加载更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:57:37