关于Pip子依赖包是否会自动升级的疑问
Django子依赖版本的安装逻辑说明
- 首先明确:每个Django版本都会定义子依赖的兼容版本范围,而非完全锁死某个具体版本。以你用的
Django==4.1.7为例,它对asgiref的要求是>=3.5.2,<4,对sqlparse的要求是>=0.2.2(你可以通过pip show Django命令查看Requires字段确认)。 - 后续通过requirements.txt重新安装时,pip会根据这个版本范围去拉取当前可用的最新兼容版本:
- 如果之后asgiref发布了3.7.0(仍在
<4的范围内),pip会自动安装3.7.0,而非你之前环境里的3.6.0; - 但如果asgiref发布了4.0.0,由于超出了
<4的约束,pip不会安装这个版本,只会选符合范围的版本。
- 如果之后asgiref发布了3.7.0(仍在
- 你当前
pip freeze显示的精确版本,只是当前环境里已安装的具体版本,并非requirements.txt的约束结果。如果想彻底固定所有依赖的精确版本,建议把pip freeze的输出覆盖到requirements.txt,或者用pip-tools、poetry这类专业依赖管理工具。
内容的提问来源于stack exchange,提问作者Sunilsai
相关产品推荐
相关产品推荐

