146 lines
3.4 KiB
Python
146 lines
3.4 KiB
Python
"""
|
|
启动脚本 - 个性化饮食推荐助手
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# 添加项目根目录到Python路径
|
|
project_root = Path(__file__).parent
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
def check_dependencies():
|
|
"""检查依赖包"""
|
|
required_packages = [
|
|
('customtkinter', 'customtkinter'),
|
|
('openai', 'openai'),
|
|
('anthropic', 'anthropic'),
|
|
('sklearn', 'scikit-learn'),
|
|
('pandas', 'pandas'),
|
|
('numpy', 'numpy'),
|
|
('dotenv', 'python-dotenv')
|
|
]
|
|
|
|
missing_packages = []
|
|
|
|
for import_name, package_name in required_packages:
|
|
try:
|
|
__import__(import_name)
|
|
except ImportError:
|
|
missing_packages.append(package_name)
|
|
|
|
if missing_packages:
|
|
print("❌ 缺少以下依赖包:")
|
|
for package in missing_packages:
|
|
print(f" - {package}")
|
|
print("\n请运行以下命令安装:")
|
|
print(f"pip install {' '.join(missing_packages)}")
|
|
return False
|
|
|
|
print("✅ 所有依赖包已安装")
|
|
return True
|
|
|
|
def check_config():
|
|
"""检查配置文件"""
|
|
env_file = Path('.env')
|
|
if not env_file.exists():
|
|
print("⚠️ 配置文件 .env 不存在")
|
|
print("正在创建示例配置文件...")
|
|
|
|
env_content = """# 个性化饮食推荐助手配置文件
|
|
|
|
# 数据库配置
|
|
DATABASE_URL=sqlite:///./data/app.db
|
|
|
|
# 大模型API配置 (可选,不配置将使用备用方案)
|
|
OPENAI_API_KEY=your-openai-api-key-here
|
|
ANTHROPIC_API_KEY=your-anthropic-api-key-here
|
|
|
|
# 模型配置
|
|
MODEL_SAVE_PATH=./models/
|
|
TRAINING_DATA_PATH=./data/training/
|
|
USER_DATA_PATH=./data/users/
|
|
|
|
# 推荐系统配置
|
|
RECOMMENDATION_TOP_K=5
|
|
MIN_TRAINING_SAMPLES=10
|
|
MODEL_RETRAIN_THRESHOLD=50
|
|
|
|
# 用户画像配置
|
|
ENABLE_PHYSIOLOGICAL_TRACKING=true
|
|
ENABLE_ASTROLOGY_FACTORS=true
|
|
ENABLE_TASTE_PREFERENCES=true
|
|
|
|
# GUI配置
|
|
APP_TITLE=个性化饮食推荐助手
|
|
WINDOW_SIZE=1200x800
|
|
THEME=dark
|
|
|
|
# 开发配置
|
|
DEBUG=true
|
|
LOG_LEVEL=INFO
|
|
"""
|
|
|
|
with open('.env', 'w', encoding='utf-8') as f:
|
|
f.write(env_content)
|
|
|
|
print("✅ 示例配置文件已创建: .env")
|
|
print("💡 提示: 如需使用大模型功能,请在 .env 文件中配置API密钥")
|
|
else:
|
|
print("✅ 配置文件存在")
|
|
|
|
return True
|
|
|
|
def create_directories():
|
|
"""创建必要的目录"""
|
|
directories = [
|
|
'data',
|
|
'data/users',
|
|
'data/training',
|
|
'models',
|
|
'logs',
|
|
'gui'
|
|
]
|
|
|
|
for directory in directories:
|
|
Path(directory).mkdir(parents=True, exist_ok=True)
|
|
|
|
print("✅ 目录结构创建完成")
|
|
|
|
def main():
|
|
"""主函数"""
|
|
print("🍎 个性化饮食推荐助手 - 启动检查")
|
|
print("=" * 50)
|
|
|
|
# 检查依赖
|
|
if not check_dependencies():
|
|
return False
|
|
|
|
# 检查配置
|
|
if not check_config():
|
|
return False
|
|
|
|
# 创建目录
|
|
create_directories()
|
|
|
|
print("\n🚀 启动应用...")
|
|
print("=" * 50)
|
|
|
|
try:
|
|
# 导入并运行主应用
|
|
from main import main as run_app
|
|
run_app()
|
|
except KeyboardInterrupt:
|
|
print("\n👋 用户中断,应用退出")
|
|
except Exception as e:
|
|
print(f"\n❌ 应用启动失败: {e}")
|
|
return False
|
|
|
|
return True
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
if not success:
|
|
sys.exit(1)
|