Python 环境管理怎么选:uv、venv、Poetry 和 Conda 的取舍

5次阅读
没有评论

很多开发机上都会留下一个巨大的 anaconda3 目录。它不是坏东西,但也不是每台机器都需要。以前写 Python,很多人默认装 Anaconda;现在如果只是写脚本、后端服务、自动化工具或普通工程项目,可以有更轻的选择。

这篇整理一下常见 Python 包和环境管理方式:uvvenv + pip、Poetry、Conda 分别适合什么场景。

先分清两个问题

Python 环境管理其实有两层:

  1. Python 版本管理:用哪个 Python,比如 3.11、3.12、3.13。
  2. 项目依赖管理:这个项目装哪些包,比如 requestsfastapipandas

很多工具会同时碰这两件事,所以容易混。

比如:

  • pyenv 主要管 Python 版本;
  • venv 主要管项目隔离环境;
  • pip 主要装包;
  • Poetry 主要管项目依赖和打包;
  • Conda 同时管 Python、包和部分系统级依赖;
  • uv 正在把虚拟环境、装包、锁定依赖、运行命令这些事情整合起来。

普通开发优先考虑 uv

现在新项目我会优先考虑 uv。它速度快,命令清爽,适合日常脚本、后端、小工具和自动化项目。

创建虚拟环境:

uv venv

安装依赖:

uv pip install requests

安装 requirements.txt

uv pip install -r requirements.txt

新建项目:

uv init
uv add requests fastapi
uv run python main.py

它的好处是:快、轻、项目内聚,适合在一台已经有很多开发工具的机器上减少环境负担。

如果你现在主要写 Java、Node、少量 Python 脚本,uv 比完整 Anaconda 更合适。

最稳妥的传统组合:pyenv + venv + pip

传统组合仍然值得知道:

pyenv install 3.12.8
pyenv local 3.12.8
python -m venv .venv
source .venv/bin/activate
pip install requests

这套的优点是所有人都懂,兼容性强,老项目很容易跑起来。

缺点是命令多,依赖锁定不够现代。如果项目要长期维护,最好配合 requirements.txtpip-tools 或直接换到 uv / Poetry。

Poetry 适合标准 Python 项目

Poetry 适合你明确要维护一个 Python 包、命令行工具或后端应用时使用。

poetry init
poetry add requests
poetry run python main.py

它会把项目信息放进 pyproject.toml,比散落的 requirements.txt 更工程化。

Poetry 的优点是规范,适合发布包和团队协作。缺点是速度和体验上现在会被 uv 挑战。新项目如果没有历史负担,可以先试 uv;已经用 Poetry 的项目,也没必要急着迁移。

Conda 适合科学计算,不适合默认常驻

Conda 的价值在于它不只管 Python 包,还能处理一些非 Python 的二进制依赖,比如科学计算、机器学习、地理数据、图像处理、CUDA 相关依赖。

适合 Conda 的场景:

  • Jupyter;
  • NumPy / SciPy / Pandas 重度使用;
  • PyTorch / TensorFlow;
  • 需要复杂 C/C++ 动态库;
  • 数据科学课程或实验环境。

不太适合 Conda 的场景:

  • 普通脚本;
  • Web 后端;
  • 小型 CLI;
  • 自动化工具;
  • 偶尔跑一两个 Python 文件。

完整 Anaconda 很大,装完以后很容易几 GB 起步。如果确实需要 Conda,更建议用 Miniforge 或 Mambaforge 这类轻量发行版,再按需安装依赖。

一台开发机可以这样定规则

我会这样分:

| 场景 | 推荐 |

| — | — |

| 新 Python 小工具 | uv |

| 老项目 | 先按项目原来的 venv / pip / Poetry |

| 标准 Python 包或应用 | uv 或 Poetry |

| 数据科学和机器学习 | Miniforge / mamba |

| 只偶尔跑脚本 | uv run 或项目内 .venv |

核心原则是:不要为了偶尔写 Python,就在机器上常驻一个完整 Anaconda。

删除 Anaconda 前检查什么

如果准备删除 ~/anaconda3,先确认几个点:

which python
which conda
conda env list

再检查 shell 配置里是否有 conda 初始化片段:

grep -n "conda" ~/.zshrc ~/.zprofile ~/.bash_profile 2>/dev/null

如果你已经不用 conda,可以删除 ~/anaconda3,并清掉 shell 配置里的 conda 初始化块。以后需要科学计算时,再安装更轻的 Miniforge。

我的建议

日常开发机上,Python 环境不要追求“一套工具管全部”。更好的方式是按场景选:

  • 默认用 uv
  • 老项目尊重原来的环境;
  • 做 Python 包时用 uv 或 Poetry;
  • 真做数据科学时再用 Conda;
  • 完整 Anaconda 不再作为默认选择。

这样既不会牺牲 Python 开发体验,也能避免几年以后回头一看,家目录里躺着一个越来越大的 anaconda3

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-06-12发表,共计2039字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)