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

Panel升级后from panel.io.pyodide import show失效,求解决方案

Panel 24.10.23版本下PyScript中show函数的正确导入方式及代码修复

核心问题解决:show函数导入路径变更

Panel升级到24.10.23版本后,原panel.io.pyodide模块下的show函数已迁移至panel.pyodide模块,需修改导入语句:

原导入:

from panel.io.pyodide import show

新导入:

from panel.pyodide import show

也可通过Panel别名直接调用:

import panel as pn
# 使用时写 pn.pyodide.show(...)

其他代码问题修复

除导入路径外,原代码还有几处需修正才能正常运行:

  1. 缺少io模块导入:使用io.BytesIO前需添加import io
  2. process_file函数缩进错误:if分支下的代码需缩进对齐
  3. 原语句Bokeh.set_log_level("info");翻译说明:该语句作用是设置Bokeh日志级别为信息级,代码参数"info"无需修改为中文(为函数固定枚举值)

修复后的完整代码

<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<py-env>
  - numpy
  - pandas
  - panel==24.10.23
</py-env>

<h1>上传CSV文件</h1>
<div id="fileinput"></div>
<div id="upload"></div>
<div id="table"></div>

<script>
  // 设置Bokeh日志级别为信息级
  Bokeh.set_log_level("info");
</script>

<py-script>
  import asyncio
  import io
  import panel as pn
  import pandas as pd
  from panel.pyodide import show

  fileInput = pn.widgets.FileInput(accept='.csv')
  uploadButton = pn.widgets.Button(name='上传', button_type='primary')

  table = pn.widgets.Tabulator(pagination='remote', page_size=10)

  document.getElementById('table').style.display = 'none'

  def process_file(event):
      if fileInput.value is not None:
          table.value = pd.read_csv(io.BytesIO(fileInput.value))
          document.getElementById('table').style.display = 'block'

  uploadButton.on_click(process_file)

  await show(fileInput, 'fileinput')
  await show(uploadButton, 'upload')
  await show(table, 'table')
</py-script>

补充说明

  • 确保py-env中指定的Panel版本为24.10.23,避免版本不一致导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:09:57