2.2 KiB
2.2 KiB
生产环境依赖安装指南
问题分析
生产环境Python 3.6 + GCC 4.8.2存在以下兼容性问题:
- GCC版本过低: GCC 4.8.2不支持C++11标准
- greenlet编译失败: SQLAlchemy 1.4.x需要greenlet,而greenlet需要C++11编译器
- 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+
- 这样可以使用更新的包版本获得更好性能