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

如何构建Python函数将代码转为IPython/Jupyter富HTML输出?

实现Jupyter风格的代码转HTML可视化输出

IPython的内置能力实现方案

IPython没有直接提供单一的内置函数完成这个需求,但可以通过组合其核心模块来复刻Jupyter单元格的功能,在普通Python脚本中运行并返回HTML格式的富输出。核心思路是利用IPython的交互式执行环境捕获代码输出(包括matplotlib图形),再将输出序列化为HTML。

foo()函数实现代码

from IPython.core.interactiveshell import InteractiveShell
from matplotlib import pyplot as plt

def foo(pycode):
    # 初始化IPython交互式shell,配置matplotlib inline后端
    shell = InteractiveShell.instance()
    shell.enable_matplotlib("inline")
    
    # 捕获代码执行的所有输出
    with shell.capture_output() as captured:
        shell.run_cell(pycode, silent=False)
    
    # 转换输出为HTML片段
    html_segments = []
    for output in captured.outputs:
        if not output.data:
            continue
        
        # 优先处理HTML格式输出
        if "text/html" in output.data:
            html_segments.append(output.data["text/html"])
        # 处理matplotlib生成的PNG图形
        elif "image/png" in output.data:
            img_tag = f'<img src="data:image/png;base64,{output.data["image/png"]}" />'
            html_segments.append(img_tag)
        # 处理普通文本输出
        elif "text/plain" in output.data:
            pre_tag = f'<pre>{output.data["text/plain"]}</pre>'
            html_segments.append(pre_tag)
    
    # 拼接所有HTML片段并返回
    return "\n".join(html_segments)

功能说明

  • 该函数通过InteractiveShell.instance()创建IPython执行环境,配置inline后端让matplotlib图形直接生成可嵌入HTML的PNG格式。
  • capture_output()上下文管理器会捕获代码执行过程中产生的所有输出(包括文本打印、图形渲染结果)。
  • 针对不同类型的输出(HTML、PNG、文本),转换为对应的HTML标签,最终拼接成完整的HTML字符串返回。

使用示例

pycode = '''
from matplotlib import pyplot as plt
plt.plot([1, 2, 3])
plt.show()
'''

out = foo(pycode)
# out即为包含matplotlib图形的HTML内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:40:10