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

使用Kaleido导出Plotly图像为PNG失败,求解决方法

Plotly导出图片报错解决方案

问题描述

我用以下代码生成饼图并导出为PNG:

fig = px.pie(df.groupby('TypeObject').count(), 
             values='ID',
             names=df.groupby('TypeObject').count().index, 
             color_discrete_sequence=px.colors.sequential.YlGnBu)
fig.show()

fig.write_image("images/fig1.png")

更新Python版本后运行报错,使用fig.show('png')也会触发相同错误。

报错信息

ResourceWarning:
unclosed file <_io.BufferedWriter name=3>

ValueError: --plotlyjs argument is not a valid URL or file path:

已尝试方法

  • 执行命令:pip install --upgrade "kaleido==0.1.*"
  • 添加代码:
    import plotly.io as pio
                                                                           
    pio.kaleido.scope.chromium_args += ("--single-process",) 
    
  • 指定plotly==5.3.1版本
  • 在导入plotly前先导入kaleido
  • 尝试使用orca,但同样出现问题

解决方案

1. 手动指定plotly.js路径

直接给kaleido指定有效的plotly.js地址,解决参数无效问题:

import plotly.io as pio
# 方式一:使用官方CDN地址
pio.kaleido.scope.plotlyjs = "https://cdn.plot.ly/plotly-2.27.0.min.js"
# 方式二:使用本地下载的plotly.js文件
# pio.kaleido.scope.plotlyjs = "/本地路径/plotly.min.js"

# 执行绘图和导出
fig = px.pie(df.groupby('TypeObject').count(), 
             values='ID',
             names=df.groupby('TypeObject').count().index, 
             color_discrete_sequence=px.colors.sequential.YlGnBu)
fig.write_image("images/fig1.png")

2. 升级到兼容的kaleido版本

放弃固定旧版本,安装与当前Python、Plotly兼容的最新版:

pip uninstall kaleido -y
pip install kaleido --upgrade

3. 匹配版本兼容性

确保Python版本(如3.10+)与Plotly、kaleido版本兼容,建议使用Plotly 5.10.0+搭配kaleido 0.2.1+,这两组版本对高Python版本适配更好。

4. 分离show()与write_image()调用

先注释fig.show(),单独测试导出功能,避免两者同时调用导致文件句柄未关闭的警告:

fig = px.pie(df.groupby('TypeObject').count(), 
             values='ID',
             names=df.groupby('TypeObject').count().index, 
             color_discrete_sequence=px.colors.sequential.YlGnBu)
# fig.show()  # 先注释,优先测试导出是否正常
fig.write_image("images/fig1.png")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 05:16:06