Skulpt与Trinket.io的Python版本疑问:免费嵌入Python3是否可行?
关于Skulpt与Trinket.io的Python3支持及自有网站嵌入问题
1. Trinket.io的Python版本说明
- Trinket.io免费版的默认“Python”项目,就是基于Skulpt主分支的准Python3版本(对应Skulpt官网所说的Python 3.7.3语法标准)。锁定的“Python 3”选项是早期版本的遗留标记,并非付费专属功能。免费用户使用默认“Python”项目就能获得Skulpt的Python3兼容能力。
2. 自有网站免费嵌入Python3代码的实现方案
完全可以免费实现,无需依赖第三方付费服务,直接基于Skulpt的开源资源即可,核心步骤如下:
- 引入Skulpt的核心文件:在网页中添加Skulpt的JS和CSS资源(可通过官方公开的CDN获取)
- 配置运行环境:通过Skulpt的API指定启用Python3模式(默认主分支就是Python3,只需确保不手动切换到Python2模式)
- 构建交互区域:在页面中添加代码输入框和输出展示区,调用Skulpt的
Sk.importMainWithBody()等API执行用户输入的Python3代码并渲染结果
举个极简示例代码片段:
<!-- 引入Skulpt资源 --> <script src="https://cdn.jsdelivr.net/npm/skulpt@latest/dist/skulpt.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/skulpt@latest/dist/skulpt-stdlib.js"></script> <!-- 页面元素 --> <textarea id="pythonCode">print("Hello, Python 3!")</textarea> <button onclick="runCode()">运行</button> <pre id="output"></pre> <script> function runCode() { var code = document.getElementById("pythonCode").value; var output = document.getElementById("output"); output.innerHTML = ""; // 配置Skulpt使用Python3模式 Sk.configure({ output: function(text) { output.innerHTML += text; }, read: function(file) { if (Sk.builtinFiles === undefined || Sk.builtinFiles["files"][file] === undefined) throw "File not found: '" + file + "'"; return Sk.builtinFiles["files"][file]; } }); // 执行代码 Sk.misceval.asyncToPromise(function() { return Sk.importMainWithBody("<stdin>", false, code, true); }).catch(function(err) { output.innerHTML += err.toString(); }); } </script>
内容的提问来源于stack exchange,提问作者Robin Andrews
相关产品推荐
相关产品推荐

