const pyodideRef = ref();
const executeResultHandle = async () => {
pyodideRef.value.runPython( ${dataForm.content}
);
console.log(pyodideRef.value.globals.get(“excuteValue”))
// Python scope from JavaScript
// const a = pyodideRef.value.globals.get(‘a’).toJs();
// console.log(a)
}
const addFn =async () => {
const pyodide = await loadPyodide();
// await pyodide.loadPackage(“numpy”);
await pyodide.loadPackage(“micropip”);
const micropip = pyodide.pyimport(“micropip”);
await micropip.install(‘numpy’);
await micropip.install(‘pandas’);
pyodideRef.value= pyodide;
// 1.引入外部方法
pyodideRef.value.globals.set(“square”, (x: number) => x*x);
// 2.引入一个模块demofn
await pyodideRef.value.runPythonAsync( from pyodide.http import pyfetch response = await pyfetch("http://192.168.234.1:8001/src/assets/pydemo/demofn.py") with open("demofn.py", "wb") as f: f.write(await response.bytes())
)
// const text = pyodide.globals.get(‘text’).toJs();
// console.log(“afdfd—”,text)
// js执行python
// const demofn = pyodide.pyimport(“demofn”);
// console.log(demofn.do_something(1));
// pyodideRef.value.globals.set(“demofn”, demofn);
dataForm.content = “import demofn\n” + dataForm.content;
}
const fileSystem01 = () => {
pyodideRef.value.runPython( with open("./hello.txt", "w") as fh: fh.write("hello world!")
);
let file = pyodideRef.value.FS.readFile(“./hello.txt”, { encoding: “utf8” });
console.log(file); // ==> “hello world!”
let demofnText = pyodideRef.value.FS.readFile(“demofn.py”, { encoding: “utf8” });
console.log(demofnText);
dataForm.content = dataForm.content + “\n” + demofnText;
// const blob = new Blob([pyodideRef.value.globals.get(‘txt’)], {type : ‘application/text’});
// let url = window.URL.createObjectURL(blob);
// window.location.assign(url);
}
/**
- import numpy as np
import pandas as pd
frame = pd.DataFrame(np.arange(16).reshape((4,4)),
index=[‘red’,‘blue’,‘yellow’,‘white’],
columns=[‘ball’,‘pen’,‘pencil’,‘paper’])
print(frame)
// 外部的方法square
print(square(3))
// 外部的模块demofn
print(demofn.do_something(2))
*/
watch(()=>dataForm.content, (content:string)=>{
console.log(content)
// testLoadPydide(content);
})