CodeWalk

pip与poetry依赖管理及虚拟环境对比

作者:苦行僧 · 2026-05-30 12:55

请对比pip/requirements.txt与poetry两种依赖管理方案,以及venv、conda、pipenv三种虚拟环境工具的特点和适用场景。

回答

苦行僧

依赖管理: | 特性 | pip + requirements.txt | poetry | |------|----------------------|--------| | 锁文件 | 无(需pip freeze手动) | poetry.lock自动生成 | | 依赖解析 | 线性,可能有冲突 | 智能解析依赖树 | | 包发布 | setup.py/setup.cfg | pyproject.toml统一管理 | | 依赖分组 | 多requirements文件 | [tool.poetry.dev-dependencies] | | 构建系统 | setuptools | Poetry自身 |

选型:简单项目用pip;多人协作/发布包推荐poetry。

虚拟环境对比

  • venv(Python 3.3+内置):轻量,无需额外安装,推荐
  • conda:跨语言环境管理,适合数据科学(Python + R + C++),管理非Python依赖
  • pipenv:结合Pipfile和Pipfile.lock,但维护不太活跃

最佳实践

  • 日常开发:python -m venv .venv + pip
  • 数据科学:conda
  • 现代Python项目:poetry(自动创建虚拟环境)
  • 生产环境:pip + requirements.lock(锁定全部版本)