# 后端依赖管理文档 ## 文档信息 - **文档版本**: 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 # 添加开发依赖 poetry add --group dev ``` #### 更新依赖 ```bash # 更新所有依赖 poetry update # 更新特定依赖 poetry update ``` #### 导出依赖 ```bash # 导出到 requirements.txt poetry export --output requirements.txt # 导出生产依赖 poetry export --output requirements.txt --without dev ``` #### 运行命令 ```bash # 在虚拟环境中运行命令 poetry run # 例如运行开发服务器 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 && pip freeze | grep >> requirements.txt ``` #### 更新依赖 ```bash # 更新所有依赖 pip install --upgrade -r requirements.txt # 更新特定依赖 pip install --upgrade ``` --- ## 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 | - | 初始版本创建 |