# 依赖版本说明 本文档详细说明了项目的 Python 版本要求、Poetry 依赖管理和版本控制策略。 ## 📦 依赖管理工具 项目使用 **Poetry** 进行现代化的依赖管理,相比传统的 `requirements.txt` 提供: - ✅ **依赖解析**: 自动解决版本冲突 - ✅ **锁定文件**: `poetry.lock` 确保环境一致性 - ✅ **虚拟环境**: 自动创建和管理虚拟环境 - ✅ **依赖分组**: 区分生产依赖和开发依赖 - ✅ **语义化版本**: 更精确的版本控制 - ✅ **构建系统**: 内置打包和发布功能 ## 🐍 Python 版本要求 ### Poetry 配置 ```toml [tool.poetry.dependencies] python = ">=3.9,<4.0" ``` ### 推荐配置 - **生产环境**: Python 3.10+ 或 3.11+ (最佳性能和稳定性) - **开发环境**: Python 3.11+ 或 3.12+ (获得最佳开发体验) - **最低要求**: Python 3.9 (基础功能支持) ### 版本兼容性矩阵 | Python版本 | 支持状态 | 推荐程度 | 主要特性 | 说明 | |-----------|---------|---------|---------|------| | 3.8 | ❌ 不支持 | 不推荐 | - | 缺少必要的类型注解特性 | | 3.9 | ✅ 完全支持 | 可用 | 基础功能 | 最低支持版本,所有功能正常 | | 3.10 | ✅ 完全支持 | 推荐 | 结构化模式匹配 | Docker 默认版本,稳定可靠 | | 3.11 | ✅ 完全支持 | 强烈推荐 | 性能优化 | 显著性能提升,类型提示增强 | | 3.12 | ✅ 完全支持 | 推荐 | 更快启动 | 更快启动时间,最新稳定特性 | | 3.13 | ✅ 完全支持 | 可用 | 最新特性 | 最新版本,开发环境推荐 | ## 📋 Poetry 依赖配置 ### pyproject.toml 结构 ```toml [tool.poetry] name = "aistudioproxyapi" version = "0.1.0" package-mode = false [tool.poetry.dependencies] # 生产依赖 python = ">=3.9,<4.0" fastapi = "==0.115.12" # ... 其他依赖 [tool.poetry.group.dev.dependencies] # 开发依赖 (可选安装) pytest = "^7.0.0" black = "^23.0.0" # ... 其他开发工具 ``` ### 版本约束语法 Poetry 使用语义化版本约束: - `==1.2.3` - 精确版本 - `^1.2.3` - 兼容版本 (>=1.2.3, <2.0.0) - `~1.2.3` - 补丁版本 (>=1.2.3, <1.3.0) - `>=1.2.3,<2.0.0` - 版本范围 - `*` - 最新版本 ## 🔧 核心依赖版本 ### Web 框架相关 ```toml fastapi = "==0.115.12" pydantic = ">=2.7.1,<3.0.0" uvicorn = "==0.29.0" ``` **版本说明**: - **FastAPI 0.115.12**: 最新稳定版本,包含性能优化和新功能 - 新增 Query/Header/Cookie 参数模型支持 - 改进的类型提示和验证 - 更好的 OpenAPI 文档生成 - **Pydantic 2.7.1+**: 现代数据验证库,使用版本范围确保兼容性 - **Uvicorn 0.29.0**: 高性能 ASGI 服务器 ### 浏览器自动化 ```toml playwright = "*" camoufox = {version = "0.4.11", extras = ["geoip"]} ``` **版本说明**: - **Playwright**: 使用最新版本 (`*`),确保浏览器兼容性 - **Camoufox 0.4.11**: 反指纹检测浏览器,包含地理位置数据扩展 ### 网络和安全 ```toml aiohttp = "~=3.9.5" requests = "==2.31.0" cryptography = "==42.0.5" pyjwt = "==2.8.0" websockets = "==12.0" aiosocks = "~=0.2.6" python-socks = "~=2.7.1" ``` **版本说明**: - **aiohttp ~3.9.5**: 异步HTTP客户端,允许补丁版本更新 - **cryptography 42.0.5**: 加密库,固定版本确保安全性 - **websockets 12.0**: WebSocket 支持 - **requests 2.31.0**: HTTP 客户端库 ### 系统工具 ```toml python-dotenv = "==1.0.1" httptools = "==0.6.1" uvloop = {version = "*", markers = "sys_platform != 'win32'"} Flask = "==3.0.3" ``` **版本说明**: - **uvloop**: 仅在非 Windows 系统安装,显著提升性能 - **httptools**: HTTP 解析优化 - **python-dotenv**: 环境变量管理 - **Flask**: 用于特定功能的轻量级 Web 框架 ## 🔄 Poetry 依赖管理命令 ### 基础命令 ```bash # 安装所有依赖 poetry install # 安装包括开发依赖 poetry install --with dev # 添加新依赖 poetry add package_name # 添加开发依赖 poetry add --group dev package_name # 移除依赖 poetry remove package_name # 更新依赖 poetry update # 更新特定依赖 poetry update package_name # 查看依赖树 poetry show --tree # 导出 requirements.txt (兼容性) poetry export -f requirements.txt --output requirements.txt ``` ### 锁定文件管理 ```bash # 更新锁定文件 poetry lock # 不更新锁定文件的情况下安装 poetry install --no-update # 检查锁定文件是否最新 poetry check ``` ## 📊 依赖更新策略 ### 自动更新 (使用 ~ 版本范围) - `aiohttp~=3.9.5` - 允许补丁版本更新 (3.9.5 → 3.9.x) - `aiosocks~=0.2.6` - 允许补丁版本更新 (0.2.6 → 0.2.x) - `python-socks~=2.7.1` - 允许补丁版本更新 (2.7.1 → 2.7.x) ### 固定版本 (使用 == 精确版本) - 核心框架组件 (FastAPI, Uvicorn, python-dotenv) - 安全相关库 (cryptography, pyjwt, requests) - 稳定性要求高的组件 (websockets, httptools) ### 兼容版本 (使用版本范围) - `pydantic>=2.7.1,<3.0.0` - 主版本内兼容更新 ### 最新版本 (使用 * 或无限制) - `playwright = "*"` - 浏览器自动化,需要最新功能 - `uvloop = "*"` - 性能优化库,持续更新 ## 版本升级建议 ### 已完成的依赖升级 1. **FastAPI**: 0.111.0 → 0.115.12 ✅ - 新增 Query/Header/Cookie 参数模型功能 - 改进的类型提示和验证机制 - 更好的 OpenAPI 文档生成和异步性能 - 向后兼容,无破坏性变更 - 增强的中间件支持和错误处理 2. **Pydantic**: 固定版本 → 版本范围 ✅ - 从 `pydantic==2.7.1` 更新为 `pydantic>=2.7.1,<3.0.0` - 确保与 FastAPI 0.115.12 的完美兼容性 - 允许自动获取补丁版本更新和安全修复 - 支持最新的数据验证特性 3. **开发工具链现代化**: ✅ - Poetry 依赖管理替代传统 requirements.txt - Pyright 类型检查支持,提升开发体验 - 模块化配置管理,支持 .env 文件 ### 可选的次要依赖更新 - `charset-normalizer`: 3.4.1 → 3.4.2 - `click`: 8.1.8 → 8.2.1 - `frozenlist`: 1.6.0 → 1.6.2 ### 升级注意事项 - 在测试环境中先验证兼容性 - 关注 FastAPI 版本更新的 breaking changes - 定期检查安全漏洞更新 ## 环境特定配置 ### Docker 环境 - **基础镜像**: `python:3.10-slim-bookworm` - **系统依赖**: 自动安装浏览器运行时依赖 - **Python版本**: 固定为 3.10 (容器内) ### 开发环境 - **推荐**: Python 3.11+ - **虚拟环境**: 强烈推荐使用 venv 或 conda - **IDE支持**: 配置了 pyrightconfig.json (Python 3.13) ### 生产环境 - **推荐**: Python 3.10 或 3.11 - **稳定性**: 使用固定版本依赖 - **监控**: 定期检查依赖安全更新 ## 故障排除 ### 常见版本冲突 1. **Python 3.8 兼容性问题** - 升级到 Python 3.9+ - 检查类型提示语法兼容性 2. **依赖版本冲突** - 使用虚拟环境隔离 - 清理 pip 缓存: `pip cache purge` 3. **系统依赖缺失** - Linux: 安装 `xvfb` 用于虚拟显示 - 运行 `playwright install-deps` ### 版本检查命令 ```bash # 检查 Python 版本 python --version # 检查已安装包版本 pip list # 检查过时的包 pip list --outdated # 检查特定包信息 pip show fastapi ``` ## 更新日志 ### 2025-01-25 - **重要更新**: FastAPI 从 0.111.0 升级到 0.115.12 - **重要更新**: Pydantic 版本策略从固定版本改为版本范围 (>=2.7.1,<3.0.0) - 更新 Python 版本要求说明 (推荐 3.9+,强烈建议 3.10+) - 添加详细的依赖版本兼容性矩阵 - 完善 Docker 环境版本说明 (Python 3.10) - 增加版本升级建议和故障排除指南 - 更新所有相关文档以反映新的依赖版本要求