#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 启动Web应用测试脚本 """ import os import sys import logging import subprocess from pathlib import Path # 设置日志 logging.basicConfig(level=logging.INFO, format='%(message)s') logger = logging.getLogger(__name__) def check_dependencies(): """检查依赖包""" logger.info("📦 检查依赖包...") required_packages = [ 'torch', 'transformers', 'numpy', 'PIL', 'flask', 'pymochow' ] missing_packages = [] for package in required_packages: try: if package == 'PIL': from PIL import Image else: __import__(package) logger.info(f"✅ {package}") except ImportError: missing_packages.append(package) logger.error(f"❌ {package} 未安装") if missing_packages: logger.info("安装缺失的包:") for pkg in missing_packages: if pkg == 'PIL': logger.info("pip install Pillow") elif pkg == 'pymochow': logger.info("pip install pymochow") else: logger.info(f"pip install {pkg}") return False return True def test_vdb_connection(): """测试VDB连接""" logger.info("🔗 测试百度VDB连接...") try: import pymochow from pymochow.configuration import Configuration from pymochow.auth.bce_credentials import BceCredentials config = Configuration( credentials=BceCredentials("root", "vdb$yjr9ln3n0td"), endpoint="http://180.76.96.191:5287" ) client = pymochow.MochowClient(config) databases = client.list_databases() client.close() logger.info(f"✅ VDB连接成功,发现 {len(databases)} 个数据库") return True except Exception as e: logger.error(f"❌ VDB连接失败: {e}") return False def prepare_directories(): """准备必要目录""" logger.info("📁 准备目录...") directories = ["uploads", "sample_images", "text_data", "templates"] for dir_name in directories: Path(dir_name).mkdir(exist_ok=True) logger.info(f"✅ {dir_name}") def start_web_app(): """启动Web应用""" logger.info("🌐 启动Web应用...") try: # 设置环境变量 os.environ['FLASK_APP'] = 'web_app_vdb_production.py' os.environ['FLASK_ENV'] = 'development' # 启动Flask应用 logger.info("启动地址: http://localhost:5000") logger.info("按 Ctrl+C 停止服务") # 直接运行Python文件 subprocess.run([sys.executable, 'web_app_vdb_production.py'], check=True) except KeyboardInterrupt: logger.info("🛑 用户停止服务") except Exception as e: logger.error(f"❌ Web应用启动失败: {e}") def main(): """主函数""" logger.info("🚀 启动多模态检索系统Web应用") logger.info("=" * 50) # 1. 检查依赖 if not check_dependencies(): logger.error("❌ 依赖包检查失败,请先安装缺失的包") return False # 2. 测试VDB连接 if not test_vdb_connection(): logger.error("❌ VDB连接失败,请检查网络和配置") return False # 3. 准备目录 prepare_directories() # 4. 启动Web应用 start_web_app() return True if __name__ == "__main__": main()