能否通过PyScript执行用户上传的纯内置Python脚本?
支持用PyScript执行无外部依赖的Python脚本
是的,完全支持。PyScript对Python标准库的内置模块(比如os、sys、json、math等)有良好的兼容,只要你的脚本仅依赖这些内置功能,就能直接通过PyScript在浏览器环境中运行。
常见实现方式
直接嵌入固定脚本:将脚本内容写在
<py-script>标签内即可执行:<html> <head> <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" /> <script defer src="https://pyscript.net/latest/pyscript.js"></script> </head> <body> <py-script> # 仅使用内置功能的示例 import math print(f"圆周率:{math.pi}") # 内置字符串处理 demo_str = "Hello PyScript" print(f"反转结果:{demo_str[::-1]}") </py-script> </body> </html>处理用户上传的脚本:通过前端获取上传的
.py文件内容,调用PyScript的Python环境动态执行:<html> <head> <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" /> <script defer src="https://pyscript.net/latest/pyscript.js"></script> </head> <body> <input type="file" id="scriptUpload" accept=".py"> <button onclick="runUploaded()">执行上传脚本</button> <div id="output"></div> <script> async function runUploaded() { const file = document.getElementById('scriptUpload').files[0]; if (!file) return; const scriptContent = await file.text(); // 调用Pyodide执行脚本 const result = await window.pyodide.runPythonAsync(scriptContent); document.getElementById('output').textContent = result || "脚本执行完成"; } </script> </body> </html>
关键注意点
- 浏览器沙箱会限制部分内置模块的功能,比如
os模块的文件系统操作无法直接访问本地磁盘,只能操作PyScript的虚拟文件系统。 - 脚本不能包含系统级权限相关的操作,这类行为会被浏览器拦截。
内容的提问来源于stack exchange,提问作者SultanOrazbayev
相关产品推荐
相关产品推荐

