【发布时间】:2019-10-28 05:40:57
【问题描述】:
我最近遇到了Pyodide project。
我已经使用 Pyodide 构建了一个小演示,但是虽然我花了很多时间查看源代码,但我还不清楚如何从 python 重定向 print 输出(除了修改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>
【问题讨论】:
标签: python matplotlib emscripten webassembly pyodide