startup.py
#!/usr/bin/env python3
"""
AI Quant 项目一键启动脚本
面向用户,无代码门槛
"""
import sys
import os
import logging
import argparse
# 添加项目根目录到路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 配置日志
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler("aiquant.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger("AIQuant.startup")
def main():
"""
主入口函数
"""
logger.info("AI Quant 项目启动中...")
try:
# 解析命令行参数
parser = argparse.ArgumentParser(
description="AI Quant 项目启动脚本"
)
parser.add_argument(
"--mode",
choices=["gui", "console", "test"],
default="gui",
help="启动模式:gui(图形界面)/ console(控制台)/ test(测试模式)"
)
parser.add_argument(
"--config",
default="config/main_config.py",
help="配置文件路径"
)
parser.add_argument(
"--log-level",
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
default="INFO",
help="日志级别"
)
args = parser.parse_args()
# 调整日志级别
logging.getLogger().setLevel(getattr(logging, args.log_level))
logger.info(f"启动模式: {args.mode}")
logger.info(f"配置文件: {args.config}")
logger.info(f"日志级别: {args.log_level}")
# 启动相应的模式
if args.mode == "gui":
logger.info("启动图形界面...")
from app.main import run_gui
run_gui(args.config)
elif args.mode == "console":
logger.info("启动控制台模式...")
from app.console import run_console
run_console(args.config)
elif args.mode == "test":
logger.info("启动测试模式...")
from app.test import run_tests
run_tests()
logger.info("AI Quant 项目启动成功")
return 0
except ImportError as e:
logger.error(f"模块导入错误: {e}")
logger.error("请检查依赖包是否已正确安装")
return 1
except Exception as e:
logger.error(f"启动失败: {e}")
logger.exception("详细错误信息:")
return 2
if __name__ == "__main__":
try:
sys.exit(main())
except KeyboardInterrupt:
logger.info("程序被用户中断")
sys.exit(0)