Pyodide(v0.23.2)无法安装/导入模块问题求助
问题原因及解决方案
核心问题
你同时手动加载了独立的Pyodide环境,又使用了PyScript的内置环境,两者完全隔离,导致<py-script>里的代码无法访问手动安装的依赖;另外<py-env>里的依赖声明有误。
修复步骤
- 移除手动加载Pyodide的JavaScript代码块,PyScript已经内置了Pyodide,无需重复加载
- 修改
<py-env>,将matplotlib.pyplot改为matplotlib(PyScript会自动处理子模块导入) - 调整图表展示逻辑,PyScript中需要用
display()配合plt.savefig()来渲染图表(直接plt.show()无法在网页中显示)
修正后的完整代码
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" /> <script defer src="https://pyscript.net/latest/pyscript.js"></script> <meta charset="utf-8" /> <title>PyScript Demo</title> </head> <body> <py-env> - pandas - matplotlib </py-env> <h1>Hello, Geeks</h1> <div id="chart"></div> <py-script> import pandas as pd import matplotlib.pyplot as plt import io from pyscript import display df = pd.DataFrame([['g1', 'c1', 10], ['g1', 'c2', 12], ['g1', 'c3', 13], ['g2', 'c1', 8], ['g2', 'c2', 10], ['g2', 'c3', 12]], columns=['group', 'column', 'val']) pivot_df = df.pivot(index="column", columns="group", values="val") pivot_df.plot(kind='bar') # 将图表保存为BytesIO对象并展示到指定div img_buf = io.BytesIO() plt.savefig(img_buf, format='png') img_buf.seek(0) display(img_buf, target="chart") plt.close() </py-script> </body> </html>
额外说明
- PyScript的
<py-env>会自动处理依赖安装,无需手动调用micropip或loadPackage - 图表需要通过
display()方法挂载到网页元素上,指定target参数对应HTML中的div ID即可
内容的提问来源于stack exchange,提问作者muted_buddy
相关产品推荐
相关产品推荐

