#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 身体平衡评估系统 - 后端服务入口 独立运行的exe版本 """ import os import sys import logging from pathlib import Path # 设置工作目录 if getattr(sys, 'frozen', False): # 如果是打包后的exe application_path = os.path.dirname(sys.executable) else: # 如果是开发环境 application_path = os.path.dirname(os.path.abspath(__file__)) os.chdir(application_path) sys.path.insert(0, application_path) # 创建必要的目录 os.makedirs('logs', exist_ok=True) os.makedirs('data', exist_ok=True) # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('logs/backend.log', encoding='utf-8'), logging.StreamHandler() ] ) logger = logging.getLogger(__name__) def main(): """主函数""" try: logger.info("启动身体平衡评估系统后端服务...") logger.info(f"工作目录: {os.getcwd()}") # 导入并启动Flask应用 from app_minimal import app, socketio, init_app # 初始化应用 init_app() # 启动服务器 logger.info("后端服务器启动在 http://localhost:5000") if socketio is not None: socketio.run( app, host='0.0.0.0', port=5000, debug=False ) else: logger.info("使用基本Flask模式启动(无SocketIO)") app.run( host='0.0.0.0', port=5000, debug=False ) except KeyboardInterrupt: logger.info("用户中断,正在关闭服务器...") except Exception as e: logger.error(f"启动失败: {e}") input("按回车键退出...") sys.exit(1) if __name__ == '__main__': main()