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