pip适合简单项目,仅安装包且不隔离环境;poetry是现代工具,自动管理依赖、虚拟环境和版本锁定。小项目用pip+requirements.txt,中大型项目推荐poetry,二者不可混用同一项目。

pip 是基础工具,适合简单项目
pip 是 Python 官方默认的包安装器,直接随 Python 一起安装。它能快速安装、升级和卸载单个包,命令直观,比如 pip install requests 或 pip uninstall flask。但 pip 本身不管理依赖关系的版本锁定,也不隔离环境——所有包默认装进系统或当前 Python 环境中,容易引发“在我机器上能跑”的问题。
常用配合方式:
- 用 pip freeze > requirements.txt 导出当前环境所有包及版本,供他人复现
- 用 pip install -r requirements.txt 安装指定依赖
- 手动编辑 requirements.txt 控制版本(如 django==4.2.7 或 numpy>=1.24)
poetry 是现代工作流,自带依赖解析与环境隔离
poetry 不仅安装包,还统一处理项目初始化、依赖管理、虚拟环境创建、打包发布等任务。它使用 pyproject.toml 文件声明依赖,运行 poetry add requests 会自动解析兼容版本、写入依赖、创建并激活专属虚拟环境,且生成 poetry.lock 锁定精确版本,确保多人协作或部署时行为一致。
关键优势:
立即学习“Python免费学习笔记(深入)”;
- 自动创建和切换项目专属虚拟环境,无需手动 venv
- 依赖冲突时主动报错并给出解决方案,而不是静默覆盖
- 支持开发依赖(如 pytest、black)与生产依赖分离
- 一键构建可发布的 wheel 包,还能发布到 PyPI
选哪个?看项目复杂度和团队习惯
小脚本、学习练习、CI 中临时环境,用 pip + requirements.txt 足够轻量;中大型项目、需要长期维护、多成员协作或要交付稳定服务,poetry 显著减少环境不一致带来的排查成本。另外,poetry 对 Python 版本管理(通过 poetry env use 3.11)和多环境切换也更友好。
注意:poetry 需单独安装(curl -sSL https://install.python-poetry.org | python3 -),且部分老旧 CI 环境可能未预装,需额外配置。
可以共存,但别混用同一项目
一个项目不要同时用 pip install 和 poetry add,否则 pyproject.toml 和 poetry.lock 会与 requirements.txt 不同步,导致行为不可预测。如果已有 pip 项目想迁移到 poetry,可用 poetry init 初始化,再逐条 poetry add 添加依赖,最后删掉旧的 requirements.txt 即可。










