一个基于Flask的网页应用,可以在浏览器中直接运行Python代码,支持文件拖拽上传和代码执行。
- 🐍 在线运行Python代码 - 直接在网页中编写和执行Python代码
- 📁 文件拖拽上传 - 支持将.py文件拖拽到网页中自动加载代码
- 🎯 代码高亮 - 使用Monaco Editor提供专业的代码编辑体验
- 🔒 安全执行 - 使用subprocess在隔离环境中执行代码
- ⏱️ 超时保护 - 30秒执行超时,防止恶意代码
- 🚫 input()检测 - 自动检测并阻止包含input()的代码执行
- 🌐 中文支持 - 完全支持中文输入和输出
- 📱 响应式设计 - 适配桌面和移动设备
- Python 3.6+
- Flask
- 现代浏览器(支持文件拖拽API)
- 克隆或下载项目文件
- 安装依赖:
pip install flask
- 启动服务器:
python app.py
- 打开浏览器访问:
http://127.0.0.1:5000
- 编写代码:在左侧编辑器中输入Python代码
- 运行代码:点击"运行"按钮执行代码
- 查看结果:在右侧输出区域查看执行结果
- 文件上传:将.py文件拖拽到编辑区域自动加载代码
- 清空代码:点击"清空"按钮重置编辑器
.
├── app.py # Flask后端服务器
├── index.html # 主页面
├── script.js # 前端JavaScript逻辑
├── style.css # 样式文件
├── README.md # 项目说明文档
├── 使用说明.md # 详细使用说明
├── 第三方库支持说明.md # 第三方库支持说明
└── templates/ # 模板目录(备用)
└── index.html # 备用模板文件
- 框架:Flask Web框架
- 代码执行:subprocess模块
- 安全措施:
- 临时文件隔离执行
- 30秒超时限制
- input()函数检测
- UTF-8编码强制
- 编辑器:Monaco Editor(VS Code编辑器核心)
- 文件处理:HTML5 File API
- UI框架:原生CSS + JavaScript
- 主题支持:亮色/暗色主题切换
执行Python代码
请求体:
{
"code": "print('Hello, World!')"
}响应:
{
"success": true,
"output": "Hello, World!\n",
"returncode": 0
}健康检查接口
- input()函数:不支持交互式输入,请使用硬编码值替代
- 执行时间:代码执行最多30秒
- 文件系统:无法访问服务器文件系统
- 网络访问:无法进行网络请求
- 内存限制:受服务器资源限制
# 变量定义和输出
x = 10
y = "Hello World"
print(f"x = {x}, y = {y}")
# 列表操作
numbers = [1, 2, 3, 4, 5]
print(f"列表: {numbers}")
# 中文支持
name = "张三"
print(f"你好,{name}!")# 基础数学运算
a = 15
b = 7
print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} * {b} = {a * b}")
print(f"{a} / {b} = {a / b}")# 字符串操作
text = "Python在线运行器"
print(f"字符串长度: {len(text)}")
print(f"大写: {text.upper()}")
print(f"小写: {text.lower()}")-
代码没有输出
- 确保代码中包含print语句
- 检查变量是否正确赋值
-
中文显示乱码
- 系统已配置UTF-8编码,正常情况下应该正确显示
-
input()函数报错
- 网页环境不支持交互式输入
- 请使用硬编码值替代input()
-
执行超时
- 代码执行时间超过30秒
- 优化代码逻辑或减少计算量
- "代码执行成功,但没有输出内容":代码正常运行但没有print输出
- "警告:检测到input()函数":代码包含不支持的input()调用
- "错误:代码执行超时":代码运行时间过长
- 修改代码后重启Flask服务器
- 前端修改直接刷新页面即可
- 生产环境建议使用Gunicorn + Nginx
- 配置适当的超时时间和资源限制
- 考虑使用Docker容器化部署
MIT License
欢迎提交Issue和Pull Request来改进这个项目。
- 基础Python代码执行功能
- 文件拖拽上传支持
- 代码高亮编辑器
- 响应式界面设计