#!/usr/bin/env python3 """ 简化版打包脚本 """ import os import sys def check_dependencies(): """检查依赖""" print("检查依赖...") try: import streamlit import openai import dotenv print("✅ 依赖检查通过") return True except ImportError as e: print(f"❌ 依赖缺失: {e}") return False def create_standalone_app(): """创建独立应用""" print("创建独立应用...") # 创建启动脚本 launcher_content = '''import os import sys import subprocess import tempfile import shutil def install_dependencies(): """安装依赖""" print("正在安装依赖...") packages = ["streamlit", "openai", "python-dotenv"] for package in packages: try: subprocess.check_call([sys.executable, "-m", "pip", "install", package]) print(f"✅ {package} 安装成功") except Exception as e: print(f"❌ {package} 安装失败: {e}") return False return True def run_app(): """运行应用""" # 创建临时目录并复制文件 temp_dir = tempfile.mkdtemp() print(f"临时目录: {temp_dir}") # 复制app.py shutil.copy2("app.py", os.path.join(temp_dir, "app.py")) # 复制.env文件(如果存在) if os.path.exists(".env"): shutil.copy2(".env", os.path.join(temp_dir, ".env")) # 切换到临时目录 os.chdir(temp_dir) # 运行streamlit print("启动应用...") print("请在浏览器中打开: http://localhost:8501") subprocess.call([sys.executable, "-m", "streamlit", "run", "app.py", "--server.headless", "true"]) # 清理临时目录 shutil.rmtree(temp_dir) if __name__ == "__main__": if install_dependencies(): run_app() else: print("依赖安装失败,请手动安装依赖") input("按任意键退出...") ''' with open('launcher.py', 'w', encoding='utf-8') as f: f.write(launcher_content) # 创建批处理文件 bat_content = '''@echo off chcp 65001 >nul echo 多Agent决策工作坊启动器 echo. echo 正在检查Python环境... python --version >nul 2>&1 if errorlevel 1 ( echo 错误:未找到Python,请先安装Python 3.8+ pause exit /b 1 ) echo Python环境正常 echo 启动应用... echo. echo 应用将在浏览器中打开,请稍候... echo. python launcher.py pause ''' with open('启动应用.bat', 'w', encoding='gbk') as f: f.write(bat_content) print("✅ 启动文件创建成功") def main(): """主函数""" print("🚀 创建多Agent决策工作坊独立应用") print("=" * 50) # 检查当前目录 if not os.path.exists('app.py'): print("❌ 错误:请在项目根目录运行此脚本") return # 检查依赖 if not check_dependencies(): print("请先安装依赖: pip install streamlit openai python-dotenv") return # 创建独立应用 create_standalone_app() print("\n🎉 打包完成!") print("📁 生成的文件:") print(" - launcher.py (启动脚本)") print(" - 启动应用.bat (双击运行)") print("\n🚀 使用方法:") print(" 1. 双击 '启动应用.bat'") print(" 2. 等待依赖安装完成") print(" 3. 在浏览器中打开 http://localhost:8501") print("\n💡 提示:教室电脑需要有Python环境") if __name__ == "__main__": main()