Skulpt是一个运行在Web端的Python解析器,用于在Web端解析执行Python代码。
https://github.com/skulpt/skulpt
# 1、安装node.js
# 2、安装依赖项
npm install
# 3、编译项目,在项目根目录会生成一个dist文件,里面包含 skulpt.min.js 和 skulpt-stdlib.js
npm run dist
① 在html文件中引入生成的两个文件,注意两个文件的顺序不能调换!!!
<!-- Skulpt -->
<script src="skulpt/dist/skulpt.min.js" type="text/javascript"></script>
<script src="skulpt/dist/skulpt-stdlib.js" type="text/javascript"></script>
② 配置
Sk.configure({
// 配置使用Python3
__future__: Sk.python3,
// 配置输出信息
output: function (text) {
console.log(text);
},
read: function (filename) {
if (Sk.builtinFiles === undefined ||
Sk.builtinFiles["files"][filename] === undefined) {
throw "File not found: '" + filename + "'";
}
return Sk.builtinFiles["files"][filename];
}
});
③ 运行程序
// python代码
var prog = `import time\ntime.sleep(1)\nprint('执行完毕')`;
// 返回一个Promise进行异步调用,执行死循环程序的时候会有问题,停不下来,后续需要解决如何停止异步调用
var myPromise = Sk.misceval.asyncToPromise(function() {
return Sk.importMainWithBody("<stdin>", false, prog, true);
});
myPromise.then(function(mod) {
console.log('程序执行完成!');
}, function(err) {
console.log(err.toString());
});