Python 虚拟环境工具清单:5 种方案适用场景

装包把全局环境搞乱,多半是没建虚拟环境。Python 虚拟环境的作用就一句话:给每个项目一套独立的包目录,A 项目升级库不会影响 B 项目。下面按「谁适合用哪种」把 5 种主流方案摆开,附创建命令和踩坑点。

结论先行:Python 虚拟环境五选一怎么定

  • 只写脚本、做作业、跑小工具:用 venv,Python 自带,零安装。
  • 做数据分析、要装 CUDA 或编译好的数学库:用 conda,从 Miniconda 起步。
  • 项目要发版、要给别人 pip 安装:用 poetry,把依赖版本锁死。
  • 手上项目多、受不了每次装包干等:用 uv。
  • 维护老项目、Python 版本低于 3.3:用 virtualenv。

拿不准就先上 venv,后面不够用再换,迁 requirements.txt 的成本并不高。

五种 Python 虚拟环境工具,各自适合谁

venv:不用装,够用

  1. 在项目根目录执行 python -m venv .venv。
  1. 激活:Windows 用 .venvScriptsactivate,macOS 或 Linux 用 source .venv/bin/activate。
  1. 命令行前面出现 (.venv) 就是成功了,之后 pip install 都装进这个目录。

好处是零安装,Python 3.3 以后自带;限制是只能管 Python 包,装不了系统级依赖,而且每开一个新终端都要重新激活一次。

conda:要装非 Python 的东西时用

数据科学场景常要装 CUDA、MKL 这类二进制依赖,pip 经常装不动,conda 能一起管。

  • 装 Miniconda 就够,完整版 Anaconda 体积大很多。
  • 建环境:conda create -n myenv python=3.11;激活:conda activate myenv。
  • 限制:环境目录占空间多,切环境比 venv 慢;纯 Web 项目没必要上。

poetry:依赖要锁死、项目要发版

pyproject.toml 写依赖,poetry.lock 锁版本,别人 clone 下来装出来的包和你一致。

  • poetry new 项目名 建骨架,poetry add requests 加依赖,poetry install 还原环境。
  • 适合团队协作和准备发到 PyPI 的项目。
  • 限制:学习成本比 venv 高,一次性小脚本用不上。

uv:装包快、项目多的时候舒服

Rust 写的包管理工具,能直接读 requirements.txt 和 pyproject.toml。

  • uv venv 建环境,uv pip install -r requirements.txt 装依赖。
  • 适合本地同时开好几个项目、每次装依赖都要等半天的情况。
  • 限制:生态比 pip 新,个别老包出问题时退回 pip 再试一次。

virtualenv:老版本 Python 的补位

Python 3.3 以前没有 venv,这类老项目先 pip install virtualenv,再 virtualenv .venv 建环境。新项目没必要专门选它。

Python 虚拟环境工具 venv、conda、poetry、uv、virtualenv 的适用场景对照示意图
五种 Python 虚拟环境工具的适用场景速查

按项目类型挑:3 个判断问题

  1. 要不要装非 Python 的依赖(CUDA、编译库)?要就用 conda;不要就往下走。
  1. 项目会给别人用、要锁版本吗?要就选 poetry 或 uv;不要就选 venv。
  1. Python 版本低于 3.3 吗?是就用 virtualenv;不是就 venv 或 uv。

三个问题都答「不需要」,用 venv 就行,别为了工具而工具。

避坑提醒:4 个容易踩的坑

  • 建了环境却忘记激活,装完发现全局多了一堆包。用 which python(macOS、Linux)或 where python(Windows)看路径里有没有 .venv。
  • 把 .venv 提交进 Git,几百 MB 的包被打进仓库。在 .gitignore 里加一行 .venv/。
  • 项目文件夹改名或搬家后环境失灵,原因是 venv 里记着绝对路径。删掉重建最快。
  • 同一个环境里 conda 和 pip 混着装,容易撞依赖。一个环境里统一用一种装包方式。

常见问题(FAQ)

每个项目都要单独建虚拟环境吗?

建议都建。判断标准很简单:只要这个项目要 pip install 第三方包,就给它单独一个环境,省得两个项目抢同一个库的版本。

venv 和 virtualenv 有什么区别?

venv 是 Python 标准库自带,virtualenv 是第三方包,支持更老的 Python 版本,建环境的速度也更快一些。新项目用 venv 足够。

直接把 .venv 文件夹删掉会有影响吗?

不影响代码,只丢环境。删掉后重新建一个 Python 虚拟环境、再按 requirements.txt 装一遍依赖就能还原,前提是这个文件你一直维护着。

requirements.txt 和 lock 文件有什么不一样?

前者通常只写包名和版本范围,后者记录的是实际装上的精确版本和整棵依赖树。要严格复现环境,lock 文件更可靠。

最后更新:2026-10-21(工具界面、价格与政策可能调整,请以官方页面为准)。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...