Files
hzdyjs/学校学生操行历史数据迁移/README-生产环境部署.md
T
2026-01-04 10:00:08 +08:00

83 lines
2.2 KiB
Markdown

# 生产环境依赖安装指南
## 问题分析
生产环境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+
- 这样可以使用更新的包版本获得更好性能