Fix dependencies and add SDD v1.0
Changes: - Fix Python dependency conflicts in requirements.txt - Update to use compatible version ranges - Add fix_dependencies.bat for easy dependency repair - Create comprehensive DEPENDENCY_FIX.md guide - Add complete System Design Document (SDD) v1.0 SDD v1.0 includes: ✅ System architecture with dual backend ✅ Complete database design (31 tables) ✅ API specifications ✅ Security design ✅ Deployment architecture ✅ Performance optimization strategies Fixed Issues: 🐛 Flask/cryptography version conflicts 🐛 pip dependency resolver warnings Documentation: 📚 DEPENDENCY_FIX.md - Dependency troubleshooting 📚 SDD_系統設計文件_v1.0.md - Complete system design 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
238
DEPENDENCY_FIX.md
Normal file
238
DEPENDENCY_FIX.md
Normal file
@@ -0,0 +1,238 @@
|
||||
# Python 依賴衝突解決方案
|
||||
|
||||
## 🔴 錯誤訊息
|
||||
|
||||
```
|
||||
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.
|
||||
flask-jwt-extended 4.5.2 requires Flask<3.0,>=2.0, but you have flask 3.0.0 which is incompatible.
|
||||
pyopenssl 25.3.0 requires cryptography<47,>=45.0.7, but you have cryptography 41.0.7 which is incompatible.
|
||||
```
|
||||
|
||||
## 🔍 問題分析
|
||||
|
||||
這個錯誤是因為:
|
||||
|
||||
1. **flask-jwt-extended** 要求 `Flask<3.0`,但安裝了 `Flask 3.0.0`
|
||||
2. **pyopenssl** 要求 `cryptography>=45.0.7`,但安裝了 `cryptography 41.0.7`
|
||||
3. 依賴版本不相容導致衝突
|
||||
|
||||
## ✅ 解決方案
|
||||
|
||||
### 方法 1:使用修復腳本(推薦)
|
||||
|
||||
**Windows:**
|
||||
```bash
|
||||
fix_dependencies.bat
|
||||
```
|
||||
|
||||
**Linux/Mac:**
|
||||
```bash
|
||||
chmod +x fix_dependencies.sh
|
||||
./fix_dependencies.sh
|
||||
```
|
||||
|
||||
### 方法 2:手動修復
|
||||
|
||||
#### 步驟 1:清理環境
|
||||
|
||||
```bash
|
||||
# 啟動虛擬環境
|
||||
# Windows:
|
||||
venv\Scripts\activate
|
||||
# Linux/Mac:
|
||||
source venv/bin/activate
|
||||
|
||||
# 升級 pip
|
||||
python -m pip install --upgrade pip
|
||||
|
||||
# 解除安裝衝突的套件
|
||||
pip uninstall -y Flask flask-jwt-extended pyopenssl cryptography
|
||||
```
|
||||
|
||||
#### 步驟 2:安裝相容版本
|
||||
|
||||
```bash
|
||||
# 安裝相容的 cryptography
|
||||
pip install "cryptography>=41.0.0,<47.0.0"
|
||||
|
||||
# 重新安裝所有依賴
|
||||
pip install -r requirements.txt --upgrade
|
||||
```
|
||||
|
||||
#### 步驟 3:驗證安裝
|
||||
|
||||
```bash
|
||||
pip list | grep -E "Flask|cryptography|PyMySQL|requests"
|
||||
```
|
||||
|
||||
### 方法 3:使用固定版本
|
||||
|
||||
如果仍有問題,使用以下固定版本:
|
||||
|
||||
```bash
|
||||
pip install Flask==2.3.3
|
||||
pip install cryptography==41.0.7
|
||||
pip install PyMySQL==1.1.0
|
||||
pip install Flask-Cors==4.0.0
|
||||
pip install requests==2.31.0
|
||||
pip install python-dotenv==1.0.0
|
||||
```
|
||||
|
||||
## 📝 更新後的 requirements.txt
|
||||
|
||||
已更新為使用版本範圍而非固定版本:
|
||||
|
||||
```txt
|
||||
# Flask 核心(使用相容版本)
|
||||
Flask>=2.3.0,<3.1.0
|
||||
Werkzeug>=2.3.0,<3.1.0
|
||||
|
||||
# CORS 支援
|
||||
Flask-Cors>=4.0.0
|
||||
|
||||
# 資料庫
|
||||
PyMySQL>=1.1.0
|
||||
cryptography>=41.0.0
|
||||
|
||||
# HTTP 請求
|
||||
requests>=2.31.0
|
||||
|
||||
# 環境變數
|
||||
python-dotenv>=1.0.0
|
||||
```
|
||||
|
||||
## 🧪 測試安裝
|
||||
|
||||
安裝完成後測試:
|
||||
|
||||
```bash
|
||||
# 測試 Python 導入
|
||||
python -c "import flask; print(f'Flask version: {flask.__version__}')"
|
||||
python -c "import pymysql; print('PyMySQL: OK')"
|
||||
python -c "import cryptography; print(f'cryptography version: {cryptography.__version__}')"
|
||||
|
||||
# 啟動伺服器測試
|
||||
python app.py
|
||||
```
|
||||
|
||||
應該看到:
|
||||
|
||||
```
|
||||
============================================================
|
||||
🚀 HR Performance System API Server (Flask/Python)
|
||||
============================================================
|
||||
📡 Server running on: http://127.0.0.1:5002
|
||||
```
|
||||
|
||||
## 🔧 其他解決方法
|
||||
|
||||
### 如果虛擬環境損壞
|
||||
|
||||
完全重建虛擬環境:
|
||||
|
||||
```bash
|
||||
# 刪除舊的虛擬環境
|
||||
# Windows:
|
||||
rmdir /s /q venv
|
||||
|
||||
# Linux/Mac:
|
||||
rm -rf venv
|
||||
|
||||
# 重新建立
|
||||
python -m venv venv
|
||||
|
||||
# 啟動並安裝
|
||||
# Windows:
|
||||
venv\Scripts\activate
|
||||
# Linux/Mac:
|
||||
source venv/bin/activate
|
||||
|
||||
pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 使用 pip-tools
|
||||
|
||||
更精確的依賴管理:
|
||||
|
||||
```bash
|
||||
pip install pip-tools
|
||||
|
||||
# 編譯相容的依賴
|
||||
pip-compile requirements.txt
|
||||
|
||||
# 安裝
|
||||
pip-sync
|
||||
```
|
||||
|
||||
### 使用 conda(可選)
|
||||
|
||||
如果 pip 持續有問題:
|
||||
|
||||
```bash
|
||||
# 建立 conda 環境
|
||||
conda create -n hr-system python=3.11
|
||||
conda activate hr-system
|
||||
|
||||
# 安裝套件
|
||||
conda install flask pymysql requests python-dotenv
|
||||
pip install flask-cors
|
||||
```
|
||||
|
||||
## 📋 檢查清單
|
||||
|
||||
修復完成後確認:
|
||||
|
||||
- [ ] 虛擬環境啟動成功
|
||||
- [ ] pip 已升級到最新版本
|
||||
- [ ] 所有依賴安裝無錯誤
|
||||
- [ ] 沒有版本衝突警告
|
||||
- [ ] Flask 可以正常導入
|
||||
- [ ] app.py 可以啟動
|
||||
- [ ] 伺服器運行在 127.0.0.1:5002
|
||||
- [ ] 訪問 http://127.0.0.1:5002/health 正常
|
||||
|
||||
## 🐛 常見問題
|
||||
|
||||
### Q1: 仍然有 cryptography 版本衝突
|
||||
|
||||
**A:** 嘗試:
|
||||
```bash
|
||||
pip install --upgrade cryptography
|
||||
```
|
||||
|
||||
### Q2: pip 安裝很慢
|
||||
|
||||
**A:** 使用國內鏡像(中國用戶):
|
||||
```bash
|
||||
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
### Q3: 權限錯誤
|
||||
|
||||
**A:** Windows 使用管理員權限運行 PowerShell,或:
|
||||
```bash
|
||||
pip install --user -r requirements.txt
|
||||
```
|
||||
|
||||
### Q4: 找不到 Python
|
||||
|
||||
**A:** 確認 Python 在 PATH 中:
|
||||
```bash
|
||||
# Windows:
|
||||
where python
|
||||
|
||||
# Linux/Mac:
|
||||
which python3
|
||||
```
|
||||
|
||||
## 📚 相關資源
|
||||
|
||||
- [Flask 文件](https://flask.palletsprojects.com/)
|
||||
- [PyMySQL 文件](https://pymysql.readthedocs.io/)
|
||||
- [pip 依賴解決](https://pip.pypa.io/en/stable/topics/dependency-resolution/)
|
||||
|
||||
---
|
||||
|
||||
**最後更新**: 2025-12-03
|
||||
**適用版本**: Python 3.8+
|
||||
Reference in New Issue
Block a user