Files
xsl_node/backend/docs/后端依赖管理文档.md
T
2026-01-26 12:29:56 +08:00

382 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后端依赖管理文档
## 文档信息
- **文档版本**: V1.0
- **创建日期**: 2026-01-26
- **文档类型**: 后端依赖管理文档
---
## 1. 依赖管理工具
本项目使用以下工具管理依赖:
### 1.1 Poetry (推荐)
Poetry 是一个现代化的 Python 依赖管理和打包工具,提供了更简洁、更一致的依赖管理体验。
**安装 Poetry**:
```bash
# 使用 pip 安装
pip install poetry
# 或使用官方安装脚本
curl -sSL https://install.python-poetry.org | python3 -
```
### 1.2 pip
如果您不使用 Poetry,也可以使用 pip 管理依赖。
---
## 2. 核心依赖
### 2.1 主要依赖
| 依赖 | 版本 | 用途 |
|------|------|------|
| fastapi | ^0.104.0 | 后端 Web 框架 |
| uvicorn[standard] | ^0.24.0 | ASGI 服务器 |
| sqlalchemy | ^2.0.0 | ORM 框架 |
| pymysql | ^1.1.0 | MySQL 数据库驱动 |
| python-jose[cryptography] | ^3.3.0 | JWT 库 |
| passlib[bcrypt] | ^1.7.4 | 密码哈希库 |
| pydantic | ^2.5.0 | 数据验证库 |
| pydantic-settings | ^2.1.0 | 配置管理库 |
| alembic | ^1.12.0 | 数据库迁移工具 |
| python-multipart | ^0.0.6 | 表单数据处理 |
| python-dotenv | ^1.0.0 | 环境变量管理 |
| aiomysql | ^0.2.0 | 异步 MySQL 驱动 |
### 2.2 开发依赖
| 依赖 | 版本 | 用途 |
|------|------|------|
| pytest | ^7.4.0 | 测试框架 |
| pytest-asyncio | ^0.21.0 | 异步测试支持 |
| pytest-cov | ^4.1.0 | 测试覆盖率 |
| flake8 | ^6.1.0 | 代码风格检查 |
| black | ^23.11.0 | 代码格式化 |
| isort | ^5.12.0 | 导入排序 |
| mypy | ^1.7.0 | 类型检查 |
---
## 3. 配置文件
### 3.1 pyproject.toml (Poetry)
```toml
[tool.poetry]
name = "project-management-backend"
version = "0.1.0"
description = "项目管理系统后端"
authors = [{ name = "Developer", email = "developer@example.com" }]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.9"
fastapi = "^0.104.0"
uvicorn = { version = "^0.24.0", extras = ["standard"] }
sqlalchemy = "^2.0.0"
pymysql = "^1.1.0"
python-jose = { version = "^3.3.0", extras = ["cryptography"] }
passlib = { version = "^1.7.4", extras = ["bcrypt"] }
pydantic = "^2.5.0"
pydantic-settings = "^2.1.0"
alembic = "^1.12.0"
python-multipart = "^0.0.6"
python-dotenv = "^1.0.0"
aiomysql = "^0.2.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.0"
pytest-asyncio = "^0.21.0"
pytest-cov = "^4.1.0"
flake8 = "^6.1.0"
black = "^23.11.0"
isort = "^5.12.0"
mypy = "^1.7.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
```
### 3.2 requirements.txt (pip)
```
fastapi==0.104.0
uvicorn[standard]==0.24.0
sqlalchemy==2.0.0
pymysql==1.1.0
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
pydantic==2.5.0
pydantic-settings==2.1.0
alembic==1.12.0
python-multipart==0.0.6
python-dotenv==1.0.0
aiomysql==0.2.0
# 开发依赖
pytest==7.4.0
pytest-asyncio==0.21.0
pytest-cov==4.1.0
flake8==6.1.0
black==23.11.0
isort==5.12.0
mypy==1.7.0
```
---
## 4. 依赖管理命令
### 4.1 使用 Poetry
#### 安装依赖
```bash
# 安装所有依赖(包括开发依赖)
poetry install
# 仅安装生产依赖
poetry install --no-dev
```
#### 添加依赖
```bash
# 添加生产依赖
poetry add <package>
# 添加开发依赖
poetry add --group dev <package>
```
#### 更新依赖
```bash
# 更新所有依赖
poetry update
# 更新特定依赖
poetry update <package>
```
#### 导出依赖
```bash
# 导出到 requirements.txt
poetry export --output requirements.txt
# 导出生产依赖
poetry export --output requirements.txt --without dev
```
#### 运行命令
```bash
# 在虚拟环境中运行命令
poetry run <command>
# 例如运行开发服务器
poetry run uvicorn app.main:app --reload
# 例如运行测试
poetry run pytest
```
### 4.2 使用 pip
#### 安装依赖
```bash
# 安装所有依赖
pip install -r requirements.txt
# 安装生产依赖(需要单独创建生产依赖文件)
pip install -r requirements-prod.txt
```
#### 添加依赖
```bash
# 安装并添加到 requirements.txt
pip install <package> && pip freeze | grep <package> >> requirements.txt
```
#### 更新依赖
```bash
# 更新所有依赖
pip install --upgrade -r requirements.txt
# 更新特定依赖
pip install --upgrade <package>
```
---
## 5. 环境配置
### 5.1 环境变量
项目使用 `.env` 文件管理环境变量,示例配置如下:
```env
# 数据库连接信息
DATABASE_URL="mysql+pymysql://username:password@localhost:3306/project_management"
# JWT 配置
SECRET_KEY="your-secret-key"
ALGORITHM="HS256"
ACCESS_TOKEN_EXPIRE_MINUTES=30
# 应用配置
APP_NAME="Project Management System"
DEBUG=True
```
### 5.2 配置文件
项目使用 `app/config.py` 管理应用配置:
```python
from pydantic_settings import BaseSettings
from functools import lru_cache
class Settings(BaseSettings):
"""应用配置"""
# 应用配置
app_name: str = "Project Management System"
debug: bool = True
# 数据库配置
database_url: str
# JWT 配置
secret_key: str
algorithm: str = "HS256"
access_token_expire_minutes: int = 30
class Config:
env_file = ".env"
case_sensitive = False
@lru_cache()
def get_settings() -> Settings:
"""获取配置实例"""
return Settings()
settings = get_settings()
```
---
## 6. 依赖版本管理
### 6.1 版本约束
Poetry 使用语义化版本约束,常见的版本约束格式:
| 格式 | 说明 | 示例 |
|------|------|------|
| ^1.0.0 | 兼容 1.x.x 版本 | ^2.0.0 匹配 2.0.0, 2.1.0 但不匹配 3.0.0 |
| ~1.0.0 | 兼容 1.0.x 版本 | ~1.0.0 匹配 1.0.0, 1.0.1 但不匹配 1.1.0 |
| >=1.0.0 | 大于等于 1.0.0 | >=2.0.0 匹配 2.0.0, 3.0.0 |
| ==1.0.0 | 精确匹配 1.0.0 | ==1.0.0 只匹配 1.0.0 |
### 6.2 依赖锁定
Poetry 使用 `poetry.lock` 文件锁定依赖版本,确保在不同环境中安装相同版本的依赖:
```bash
# 生成锁定文件
poetry lock
# 使用锁定文件安装依赖
poetry install
```
### 6.3 依赖解析
如果遇到依赖冲突,可以使用以下方法解决:
1. **更新依赖版本**:尝试更新冲突的依赖版本
2. **指定版本**:为冲突的依赖指定兼容的版本
3. **使用虚拟环境**:为不同项目使用独立的虚拟环境
---
## 7. 开发最佳实践
### 7.1 依赖管理建议
1. **定期更新依赖**:定期更新依赖以获取安全补丁和新特性
2. **使用锁定文件**:在生产环境中使用锁定文件确保依赖版本一致
3. **分离开发和生产依赖**:只在生产环境中安装必要的依赖
4. **使用虚拟环境**:为每个项目使用独立的虚拟环境
5. **记录依赖变更**:在提交代码时同时提交依赖变更
### 7.2 安全注意事项
1. **检查依赖安全**:使用安全扫描工具检查依赖的安全漏洞
2. **使用可信依赖**:只使用来自可信源的依赖
3. **固定依赖版本**:在生产环境中固定依赖版本,避免自动更新引入问题
4. **定期审计依赖**:定期审计项目依赖,移除不再使用的依赖
---
## 8. 常见问题
### 8.1 依赖安装失败
**问题**:依赖安装失败,出现版本冲突
**解决方法**
1. 检查 Python 版本是否兼容
2. 尝试使用 `poetry update` 更新依赖
3. 检查网络连接是否正常
4. 尝试清理缓存:`poetry cache clear --all pypi`
### 8.2 数据库连接失败
**问题**:无法连接到数据库
**解决方法**
1. 检查数据库服务是否运行
2. 检查数据库连接字符串是否正确
3. 检查数据库用户权限是否正确
4. 检查网络连接是否正常
### 8.3 JWT 认证失败
**问题**JWT 认证失败
**解决方法**
1. 检查 `SECRET_KEY` 是否正确设置
2. 检查 Token 是否过期
3. 检查 Token 格式是否正确
4. 检查认证中间件配置是否正确
---
## 9. 附录
### 9.1 Python 版本要求
本项目要求 Python 3.9 或更高版本。
### 9.2 开发工具推荐
| 工具 | 用途 | 安装命令 |
|------|------|----------|
| Poetry | 依赖管理 | `pip install poetry` |
| PyCharm | IDE | [官网下载](https://www.jetbrains.com/pycharm/) |
| VS Code | 编辑器 | [官网下载](https://code.visualstudio.com/) |
| MySQL Workbench | 数据库管理 | [官网下载](https://www.mysql.com/products/workbench/) |
### 9.3 变更记录
| 版本 | 日期 | 修改人 | 修改内容 |
|------|------|--------|----------|
| V1.0 | 2026-01-26 | - | 初始版本创建 |