标签: pyodide

如何在浏览器中复制/下载在 Pyodide 中创建的文件?

我设法在浏览器中运行 Pyodide。我创建了hello.txt文件。但我怎样才能访问它。
Pyodide
https://github.com/iodide-project/pyodide/blob/master/docs/using_pyodide_from_javascript.md

pyodide.runPython('open("hello.txt", "w")')
Run Code Online (Sandbox Code Playgroud)

我在 chrome devtools 中尝试了什么?

pyodide.runPython('os.chdir("../")')
pyodide.runPython('os.listdir()')
pyodide.runPython('os.path.realpath("hello.txt")')
Run Code Online (Sandbox Code Playgroud)

输出为listdir

["hello.txt", "lib", "proc", "dev", "home", "tmp"]
Run Code Online (Sandbox Code Playgroud)

输出为realpath

"/hello.txt"
Run Code Online (Sandbox Code Playgroud)

还,

pyodide.runPython('import platform')
pyodide.runPython('platform.platform()')
Run Code Online (Sandbox Code Playgroud)

输出

"Emscripten-1.0-x86-JS-32bit"
Run Code Online (Sandbox Code Playgroud)

chrome devtools 控制台中的所有输出。

它是在根文件夹中创建的。但是如何在文件资源管理器中访问它或如何将文件复制到下载文件夹?

谢谢

python pyodide

8
推荐指数
1
解决办法
2198
查看次数

如何在浏览器中重定向/渲染Pyodide输出?

我最近遇到了Pyodide项目

我已经使用Pyodide构建了一个小样,但是尽管我花了很多时间来查看源代码,但是对我来说,如何重定向printpython的输出(除了修改CPython源代码之外)还不是很明显(而且)。,如何将输出从matplotlib.pyplot重定向到浏览器。

从源代码来看,FigureCanvasWasm确实有一个show()带有适当后端的方法可以绘制到浏览器画布上-但是,我不清楚如何实例化此类并调用它的show()方法,或者是否还有另一种更明显的重定向方式画到画布上。

因此,我的问题是:

  1. 我如何重定向print()消息
  2. 如何强制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>
Run Code Online (Sandbox Code Playgroud)

python matplotlib emscripten webassembly pyodide

6
推荐指数
3
解决办法
206
查看次数

如何在 Pyodide 上执行 HTTP POST 请求

在 pyodide 中,它不支持 requests 模块,因此要从 api 获取数据,我们使用 open_url 以及如何使用 api 使用 pyodide 发布数据

python pyodide

5
推荐指数
2
解决办法
3982
查看次数

如何使用 pyodide 在项目中导入模块而不出现错误?

每当我在 pyodide 中导入 python 模块时,都会出现此错误。

pyodide.js:108 Invalid package name or URI
Run Code Online (Sandbox Code Playgroud)

我不确定如何正确导入模块,我已经尝试过文档中提到的这一点。

pyodide.loadPackage('<module address>')    
Run Code Online (Sandbox Code Playgroud)

(这会返回一个关于我运行此方法的决议的承诺)

pyodide.runPython('
                   <python code here>
                ')
Run Code Online (Sandbox Code Playgroud)

执行后,我收到上述错误。

JavaScript 代码:

<html>
  <head>
      <script type="text/javascript">
          // set the pyodide files URL (packages.json, pyodide.asm.data etc)
          window.languagePluginUrl = 'https://pyodide-cdn2.iodide.io/v0.15.0/full/';
      </script>
      <script src="https://pyodide-cdn2.iodide.io/v0.15.0/full/pyodide.js"></script>
  </head>
  <body>
    Pyodide test page <br>
    Open your browser console to see pyodide output
    <script type="text/javascript">
          languagePluginLoader.then(function () {
            pyodide.loadPackage('<address>').then(() => {
                    console.log(pyodide.runPython('
                    import sys
                    from <my package> import *
                    sys.version
                '));
                console.log(pyodide.runPython('print(1 + 2)'));
            });
            
          });
    </script> …
Run Code Online (Sandbox Code Playgroud)

javascript python pyodide

3
推荐指数
1
解决办法
4565
查看次数

在pyodide中运行pytorch?

有什么办法可以在pyodide中运行python库pytorch吗?我尝试使用 micropip 安装 pytorch,但它给出了以下错误消息:

找不到“pytorch”的纯 Python 3 轮子

python pytorch pyodide

3
推荐指数
1
解决办法
337
查看次数

通过 Github 页面中的 Pyodide 执行 Python

有什么办法可以在 github 页面中运行 python 吗?特别是通过Pyodide,因为我正在使用 pandas。我知道 github 页面仅用于使用 HTML/CSS/JS 提供静态页面,但我想知道 pyodide 是否有解决方法,因为它是用 Javascript 编译的。

我正在尝试构建一个小型 Web 应用程序,它有一个用户名输入框,一旦提交,就会从 API 调用一些数据,在 pandas 中处理并显示一些可视化效果(使用 Chart.js 或 Zingcharts 等 JS 库,或者使用 matplotlib /西博恩)

javascript python web-applications github-pages pyodide

3
推荐指数
1
解决办法
855
查看次数

如何多次使用pyodide功能

我想要运行函数来阻止表的每一行。我想在加载 HTML 代码后执行此操作,我尝试这样做

<body>
    <script
      type="text/javascript"
      src="https://cdn.jsdelivr.net/pyodide/dev/full/pyodide.js"
    ></script>
    <script type="text/javascript">
        
      async function main(kw) {
        let pyodide = await loadPyodide({
          indexURL: "https://cdn.jsdelivr.net/pyodide/dev/full/",
        });
        
        pyodide.globals.set("mikw", kw);     
        await pyodide.loadPackage("micropip");
        await pyodide.runPythonAsync(`
            
        import micropip
        import js
        await micropip.install('snowballstemmer')
        import snowballstemmer
        stemmer = snowballstemmer.stemmer('english')
        
        div = js.document.createElement("div")
        div.innerHTML = stemmer.stemWords('Hello this my default text '.split())
        js.document.body.prepend(div)
        varP = js.document.getElementById('origen').textContent
        print(varP)
        salida = stemmer.stemWords(varP.split())
        print(salida)
        divSalida = js.document.createElement("div")
        div.innerHTML =salida
        salida = stemmer.stemWords(mikw.split())
        print(salida)

        `);
        
      } 
        
      main('This are the second text, I put this text on …
Run Code Online (Sandbox Code Playgroud)

webassembly pyodide

3
推荐指数
1
解决办法
747
查看次数