setup_env.py
#!/usr/bin/env python3
"""
AI Quant 项目环境配置脚本
面向用户,无代码门槛
"""
import sys
import os
import logging
import subprocess
import platform
# 配置日志
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[
logging.StreamHandler()
]
)
logger = logging.getLogger("AIQuant.setup")
def check_python_version():
"""
检查 Python 版本
"""
logger.info(f"Python 版本: {sys.version}")
major, minor = sys.version_info.major, sys.version_info.minor
if major != 3 or minor < 8:
logger.error("需要 Python 3.8 或更高版本")
return False
return True
def check_environment():
"""
检查运行环境
"""
logger.info(f"操作系统: {platform.system()} {platform.release()}")
if platform.system() != "Windows":
logger.warning("AI Quant 主要支持 Windows 10/11 系统")
return True
def install_requirements():
"""
安装依赖包
"""
requirements_file = os.path.join(os.path.dirname(
os.path.dirname(os.path.abspath(__file__))), "requirements.txt")
logger.info(f"使用依赖文件: {requirements_file}")
if not os.path.exists(requirements_file):
logger.error(f"依赖文件不存在: {requirements_file}")
return False
try:
logger.info("正在安装项目依赖...")
result = subprocess.run(
[sys.executable, "-m", "pip", "install", "-r", requirements_file],
check=True,
capture_output=True,
text=True
)
logger.info(f"安装成功: {result.stdout}")
return True
except subprocess.CalledProcessError as e:
logger.error(f"安装失败: {e}")
logger.error(f"错误输出: {e.stderr}")
return False
def check_dependencies():
"""
检查依赖是否安装成功
"""
logger.info("检查项目依赖是否安装成功...")
try:
import vnpy
logger.info(f"vnpy 版本: {vnpy.__version__}")
import pandas
logger.info(f"pandas 版本: {pandas.__version__}")
import numpy
logger.info(f"numpy 版本: {numpy.__version__}")
import PySide6
logger.info(f"PySide6 版本: {PySide6.__version__}")
logger.info("项目依赖检查通过")
return True
except ImportError as e:
logger.error(f"依赖检查失败: {e}")
return False
def main():
"""
主入口函数
"""
logger.info("AI Quant 项目环境配置开始")
try:
# 检查 Python 版本
if not check_python_version():
return False
# 检查运行环境
if not check_environment():
return False
# 安装依赖
if not install_requirements():
return False
# 检查依赖是否安装成功
if not check_dependencies():
return False
logger.info("AI Quant 项目环境配置完成")
return True
except Exception as e:
logger.error(f"配置过程中出错: {e}")
logger.exception("详细错误信息:")
return False
if __name__ == "__main__":
try:
success = main()
sys.exit(0 if success else 1)
except KeyboardInterrupt:
logger.info("程序被用户中断")
sys.exit(0)