Python 项目依赖管理结构发展
2025/8/12大约 1 分钟
python 项目依赖管理结构发展:
pip 安装依赖,但安装在全局,容易出现依赖版本冲突的问题
venv 为每个项目搭建一套自己的虚拟环境,使得 pip 能安装到每个项目中,但是使用前需要先激活虚拟环境
依赖列表使用
pip freeze > requirements.txt
生成,但默认会将所有相关依赖都列出来,删除一个依赖就只会删除一个依赖,不会将其相关的依赖也删除,其他的就变成了孤儿依赖引入
pyproject.toml
来管理依赖,将依赖放置在dependencies
中,使用pip install -e .
来安装依赖,就会自动处理好所有的间接依赖了手动去编辑
pyproject.toml
太麻烦了,就催生了uv
poetry
这样的项目管理工具,本质上是对 pip venv 等的高级封装(但我看到 uv 是新的实现,完全使用了 rust 重写),提供了用户友好的高级接口方便地进行操作
这种流程对于我一个前端开发来说,因为 npm 就是这样去做的,我感觉依赖管理本应就是这样,没想到 python 相对来说比较落后,我记得在大学的时候搞 python 还是使用 requirements 来管理依赖,也还没有接触虚拟环境这个概念,也是最近去搞 AI 相关的工程化项目才陆续接触到,证明了这种项目的依赖管理方式目前来说还是比较成熟的,node 的 npm、rust 的 cargo 都是这样的架构。