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

PyScript中使用Panel时遭遇系列错误的排查求助

PyScript中使用Panel时遭遇系列错误的排查求助

我之前用PyScript搭配Panel写的脚本正常跑了快一年,最近突然罢工了,折腾了好几个阶段还是没完全解决,想请大家帮忙看看问题出在哪。

初始错误:AttributeError 找不到'initialized'属性

一开始我遇到的是这个报错,完全摸不着头脑,所以一开始根本不知道该怎么下手修复:

JsException(PythonError: Traceback (most recent call last):
File "/lib/python3.10/asyncio/futures.py", line 201,
in result raise self._exception
File "/lib/python3.10/asyncio/tasks.py", line 232,
in __step result = coro.send(None)
File "/lib/python3.10/site-packages/_pyodide/_base.py", line 500,
in eval_code_async await CodeRunner(
File "/lib/python3.10/site-packages/_pyodide/_base.py", line 353,
in run_async await coroutine File "", line 2, in
File "/lib/python3.10/site-packages/panel/__init__.py", line 48,
in from . import layout # noqa
File "/lib/python3.10/site-packages/panel/layout/__init__.py", line 31,
in from .accordion import Accordion # noqa
File "/lib/python3.10/site-packages/panel/layout/accordion.py", line 5,
in from .base import NamedListPanel
File "/lib/python3.10/site-packages/panel/layout/base.py", line 13,
in from ..reactive import Reactive
File "/lib/python3.10/site-packages/panel/reactive.py", line 33,
in from .viewable import Layoutable, Renderable, Viewable
File "/lib/python3.10/site-packages/panel/viewable.py", line 25,
in from .config import config, panel_extension
File "/lib/python3.10/site-packages/panel/config.py", line 417,
in config = _config(**{k: None if p.allow_None else getattr(_config, k)
File "/lib/python3.10/site-packages/panel/config.py", line 216,
in __init__ super().__init__(**params)
File "/lib/python3.10/site-packages/param/parameterized.py", line 4139,
in __init__ if not isinstance(self._param__private, _InstancePrivate):
File "/lib/python3.10/site-packages/panel/config.py", line 289,
in __getattribute__ init = super().__getattribute__('initialized') AttributeError: '_config' object has no attribute 'initialized' )

这是我当时用的完整代码:

<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://unpkg.com/@holoviz/panel@0.13.0/dist/bundled/bootstraptemplate/bootstrap.css">
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega@5"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega-lite@5"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vega-embed@6"></script>
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.9.3/dist/js/tabulator.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-2.4.2.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.2.min.js"></script>
<script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.2.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/@holoviz/panel@0.13.0/dist/panel.min.js"></script>
<script type="text/javascript">
Bokeh.set_log_level("info");
</script>
<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==0.13.1a2
- xlsxwriter
- openpyxl
</py-env>
</head>
<body>
<div class="container-fluid d-flex flex-column vh-100 overflow-hidden" id="container">
<nav class="navbar navbar-expand-md navbar-dark sticky-top shadow" id="header"
style="background-color: #0f54ea;">
<div class="app-header">
<a class="title" href="" style="color: #f7f6f3;"> Calcuator</a>
</div>
</nav>
<div class="row overflow-hidden" id="content">
<div class="col mh-100 float-left" id="main">
<p> Please Upload a CSV file below to start the  calculation! </p>
<div id="fileinput"></div>
<div id="table"></div>
<div id="download"></div>
</div>
</div>
</div>
<py-script>
import asyncio
import panel as pn
import pandas as pd
from panel.io.pyodide import show
import xlsxwriter
import openpyxl

file_input = pn.widgets.FileInput(accept='.xlsx', width=180)
button_upload = pn.widgets.Button(name='Upload', button_type='primary', width=100)
row = pn.Row(file_input, button_upload, height=75)
table = pn.widgets.Tabulator(pagination='remote', page_size=20, disabled=True)

document.getElementById('table').style.display = 'none'
await show(row, 'fileinput')
await show(table, 'table')
await show(file_download_csv, 'download')

print(row)
print(table)
print(file_download_csv)

document.getElementById('download').style.display = 'none'
</py-script>
</body>
</html>

第一次更新:升级PyScript后遇到顶级await禁用问题

后来我把PyScript升级到了最新版本,报错变了,这次看起来更具体,但我完全不懂什么是协程:

UserError: (PY9000): The use of top-level "await", "async for", and "async with" has been removed.
Please write a coroutine containing your code and schedule it using asyncio.ensure_future() or similar.

第二次更新:尝试协程后遇到Panel模块找不到的问题

我照着提示试着写了个协程,结果又弹出新错误:

No module named 'panel'

现在我大概明白过来,这个脚本是PyScript还在Beta阶段时写的,当时的示例代码和现在的规范已经不一样了,我打算照着现在的官方示例重新写一遍脚本,但还是希望能得到大家的指点,看看有没有更快捷的修复方式,或者这些错误到底是版本不兼容导致的还是别的问题?

备注:内容来源于stack exchange,提问作者Jasim C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:13:01