# 生产环境依赖安装指南 ## 问题分析 生产环境Python 3.6 + GCC 4.8.2存在以下兼容性问题: 1. **GCC版本过低**: GCC 4.8.2不支持C++11标准 2. **greenlet编译失败**: SQLAlchemy 1.4.x需要greenlet,而greenlet需要C++11编译器 3. **Python版本限制**: Python 3.6对新版本包的支持有限 ## 解决方案对比 | 方案 | requirements.txt | requirements-prod.txt | 说明 | |------|------------------|----------------------|------| | **适用环境** | Python 3.8+ + GCC 5.0+ | Python 3.6 + GCC 4.8 | 当前生产环境 | | **pandas** | 1.3.0-2.0.0 | 1.1.5 | 固定版本,避免编译 | | **sqlalchemy** | 1.4.0-2.0.0 | 1.2.19 | 1.2.x无需greenlet | | **编译依赖** | 需要C++11编译器 | 无需编译 | ✅ **推荐** | ## 生产环境安装命令 ```bash cd 学校学生操行历史数据迁移 # 推荐方案:使用预编译版本(无需编译) pip3 install --user -r requirements-prod.txt # 验证安装 python3 test_dependencies.py ``` ## 版本说明 ### requirements-prod.txt (推荐用于生产环境) - **pandas==1.1.5**: 稳定的预编译版本 - **sqlalchemy==1.2.19**: 不依赖greenlet,无需C++编译 - **pymysql==0.9.3**: 纯Python实现 - **xlrd==1.2.0**: Excel读取库 - **openpyxl==2.6.4**: Excel写入库 ### requirements.txt (需要现代化环境) - 需要Python 3.8+和GCC 5.0+ - 如果生产环境满足条件,可使用此配置获得更好性能 ## 故障排除 ### 如果仍有编译问题 ```bash # 检查GCC版本 gcc --version # 检查Python版本 python3 --version # 强制使用预编译版本 pip3 install --user --only-binary=all -r requirements-prod.txt ``` ### 验证安装成功 ```bash python3 -c " import pandas as pd import sqlalchemy import pymysql import xlrd import openpyxl print('所有依赖安装成功!') " ``` ## 技术细节 - **greenlet问题**: 是SQLAlchemy异步功能依赖,但同步操作不需要 - **C++11要求**: greenlet使用现代C++特性,旧编译器不支持 - **版本选择**: 优先选择有wheel包的版本,避免源码编译 ## 升级建议 如果可能,建议生产环境升级到: - Python 3.8+ - GCC 7.0+ - 这样可以使用更新的包版本获得更好性能