README-生产环境部署.md 2.2 KB

生产环境依赖安装指南

问题分析

生产环境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编译器 无需编译 ✅ 推荐

生产环境安装命令

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+
  • 如果生产环境满足条件,可使用此配置获得更好性能

故障排除

如果仍有编译问题

# 检查GCC版本
gcc --version

# 检查Python版本
python3 --version

# 强制使用预编译版本
pip3 install --user --only-binary=all -r requirements-prod.txt

验证安装成功

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+
  • 这样可以使用更新的包版本获得更好性能