我最近遇到了Pyodide 项目。
我已经使用 Pyodide 构建了一个小演示,但是虽然我花了很多时间查看源代码,但对我来说如何重定向print
来自 python 的输出(除了修改 CPython 源代码)并不明显(还),而且,如何将输出从 matplotlib.pyplot 重定向到浏览器。
从源代码来看,FigureCanvasWasm确实有一个show()
带有适当后端的方法,用于绘制到浏览器画布 - 但是,我不清楚如何实例化这个类并调用它的show()
方法,或者实际上是否有另一种更明显的重定向方式绘制到画布上。
因此,我的问题是:
- 如何重定向
print()
消息 - 如何强制 pyodide 在浏览器中绘制 matplotlib 图形?
这是我的测试页面:
<!doctype html>
<meta charset="utf-8">
<html lang="en">
<html>
<head>
<title>Demo</title>
<script src="../../pyodide/build/pyodide.js"></script>
</head>
<body>
</body>
<script type="text/javascript">
languagePluginLoader.then(() => {
pyodide.loadPackage(['matplotlib']).then(() => {
pyodide.runPython(`
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
#fig = plt.gcf()
#fig.savefig(imgdata, format='png')
print('Done from python!')`
);
//var image = pyodide.pyimport('imgdata');
//console.log(image);
});});
</script>
<html>