{"record":{"id":"2c05caabcbea42ac","repo":"langchain-ai/langchain","slug":"install-pyppeteer-to-use-the-pyppeteer-method-pi","errorCode":null,"errorMessage":"Install Pyppeteer to use the Pyppeteer method: `pip install pyppeteer`.","messagePattern":"Install Pyppeteer to use the Pyppeteer method: `pip install pyppeteer`\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"libs/core/langchain_core/runnables/graph_mermaid.py","lineNumber":344,"sourceCode":"            f\"Invalid draw method: {draw_method}. \"\n            f\"Supported draw methods are: {supported_methods}\"\n        )\n        raise ValueError(msg)\n\n    return img_bytes\n\n\nasync def _render_mermaid_using_pyppeteer(\n    mermaid_syntax: str,\n    output_file_path: str | None = None,\n    background_color: str | None = \"white\",\n    padding: int = 10,\n    device_scale_factor: int = 3,\n) -> bytes:\n    \"\"\"Renders Mermaid graph using Pyppeteer.\"\"\"\n    if not _HAS_PYPPETEER:\n        msg = \"Install Pyppeteer to use the Pyppeteer method: `pip install pyppeteer`.\"\n        raise ImportError(msg)\n\n    browser = await launch()\n    page = await browser.newPage()\n\n    # Setup Mermaid JS\n    await page.goto(\"about:blank\")\n    await page.addScriptTag(\n        {\"url\": \"https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js\"}\n    )\n    await page.evaluate(\n        \"\"\"() => {\n                mermaid.initialize({startOnLoad:true});\n            }\"\"\"\n    )\n\n    # Render SVG\n    svg_code = await page.evaluate(\n        \"\"\"(mermaidGraph) => {","sourceCodeStart":326,"sourceCodeEnd":362,"githubUrl":"https://github.com/langchain-ai/langchain/blob/e32fa9a52eab3b61ad7a45399bfde59b3e580fc4/libs/core/langchain_core/runnables/graph_mermaid.py#L326-L362","documentation":"When draw_mermaid_png() is called with MermaidDrawMethod.PYPPETEER, rendering launches a headless Chromium via pyppeteer. If pyppeteer is not installed, _render_mermaid_using_pyppeteer raises this ImportError telling you the exact extra required.","triggerScenarios":"draw_mermaid_png(syntax, draw_method=MermaidDrawMethod.PYPPETEER) in an environment without pyppeteer.","commonSituations":"Opting for local rendering to avoid the mermaid.ink network API but forgetting the optional dependency; pyppeteer is also unmaintained and its bundled Chromium download often breaks on modern Python versions.","solutions":["pip install pyppeteer, then run pyppeteer-install once to fetch Chromium","If pyppeteer fails to install/run (common on Python 3.10+), switch to the default draw_method=MermaidDrawMethod.API","For fully offline pipelines, render Mermaid with an external tool (e.g. mermaid-cli) instead"],"exampleFix":"# before\ndraw_mermaid_png(syntax, draw_method=MermaidDrawMethod.PYPPETEER) # ImportError\n# after\npip install pyppeteer && pyppeteer-install\ndraw_mermaid_png(syntax, draw_method=MermaidDrawMethod.PYPPETEER)","handlingStrategy":"validation","validationCode":"try:\n    import pyppeteer  # noqa: F401\n    ok = True\nexcept ImportError:\n    ok = False\nif not ok:\n    draw_mermaid_png(syntax)  # default API path","typeGuard":null,"tryCatchPattern":"try:\n    img = draw_mermaid_png(syntax, draw_method=MermaidDrawMethod.PYPPETEER)\nexcept ImportError:\n    img = draw_mermaid_png(syntax)  # fall back to API","preventionTips":["Prefer MermaidDrawMethod.API unless you must render offline","Run pyppeteer-install in your Dockerfile so Chromium is present before first use"],"tags":["graph","mermaid","png","missing-dependency","importerror","pyppeteer"],"backgroundTag":null,"analyzedSha":"e32fa9a52eab3b61ad7a45399bfde59b3e580fc4","analyzedAt":"2026-08-14T18:42:09.092Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}