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

如何通过代理在Jupyter Notebook中使用mermaid.ink渲染Mermaid图

代理环境下Jupyter Notebook显示Mermaid图的解决方案

方案1:在代码中配置请求代理

如果你的实现是通过requests调用mermaid.ink接口,可直接在请求时指定代理参数,让请求走代理通道获取图片:

from IPython.display import Image
import requests

def render_mermaid_with_proxy(mermaid_code):
    # 替换为你的代理地址和端口
    proxy_settings = {
        'http': 'http://your-proxy-address:port',
        'https': 'http://your-proxy-address:port'
    }
    # 编码Mermaid代码并请求mermaid.ink
    encoded_code = requests.utils.quote(mermaid_code)
    img_url = f"https://mermaid.ink/img/{encoded_code}"
    # 带代理请求图片
    response = requests.get(img_url, proxies=proxy_settings)
    # 直接显示图片内容
    display(Image(response.content))

# 使用示例
render_mermaid_with_proxy("""
graph TD
    A[开始] --> B{判断}
    B -->|是| C[执行操作]
    B -->|否| D[跳过]
    C --> E[结束]
    D --> E[结束]
""")

优点:无需额外安装工具,仅需修改现有代码;生成的图仍能在GitHub正常显示。

方案2:本地渲染Mermaid图(完全脱离远程服务)

使用mermaid-cli(mmdc)本地生成图片,彻底避免代理限制问题:

  1. 先安装mermaid-cli:通过npm执行npm install -g @mermaid-js/mermaid-cli(需先安装Node.js)
  2. 在Jupyter中编写Python代码调用本地mmdc生成并显示图片:
from IPython.display import Image, SVG
import subprocess
import tempfile
import os

def render_mermaid_local(mermaid_code, output_format='png'):
    # 创建临时Mermaid文件
    with tempfile.NamedTemporaryFile(mode='w', suffix='.mmd', delete=False) as tmp_mmd:
        tmp_mmd.write(mermaid_code)
        input_path = tmp_mmd.name
    
    # 生成输出文件路径
    output_path = f"{os.path.splitext(input_path)[0]}.{output_format}"
    # 调用mmdc本地渲染
    subprocess.run(['mmdc', '-i', input_path, '-o', output_path], check=True)
    
    # 显示图片
    if output_format == 'png':
        display(Image(output_path))
    elif output_format == 'svg':
        display(SVG(output_path))
    
    # 清理临时文件
    os.remove(input_path)
    os.remove(output_path)

# 使用示例
render_mermaid_local("""
graph LR
    X[输入] --> Y[处理]
    Y --> Z[输出]
""", output_format='svg')

优点:完全不依赖远程服务,代理环境下无网络限制;生成的图片会被嵌入Notebook,GitHub可直接显示。

方案3:配置Jupyter全局代理

修改Jupyter配置文件,让所有网络请求默认走代理:

  1. 生成Jupyter配置文件(如果没有):执行jupyter notebook --generate-config
  2. 打开生成的jupyter_notebook_config.py,添加以下代码:
import os
# 替换为你的代理地址
os.environ['HTTP_PROXY'] = 'http://your-proxy-address:port'
os.environ['HTTPS_PROXY'] = 'http://your-proxy-address:port'
  1. 重启Jupyter Notebook后生效。
    优点:一次配置全局生效,无需修改每个绘图代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:33:10