Python 虚拟环境实战:venv与 conda到底该用哪个

举报
海是岛思念的泪 发表于 2026/08/27 09:46:37 2026/08/27
【摘要】 Python 项目最怕"在我机器上能跑"。本文对比 venv 和 conda 两种虚拟环境方案,给出选型建议和常用命令,帮你彻底告别依赖冲突。

一、为什么一定要虚拟环境

Python 的包是全局安装的。如果你 A 项目要 requests==2.25,B 项目要 requests==2.31,装一起就冲突,最后谁都跑不起来。

虚拟环境就是给每个项目开一个独立的"依赖小房间",互不干扰。这是 Python 开发的基本功,没有例外。

二、venv:Python 自带的轻量方案

venv 是 Python 3.3+ 内置的,不用额外装,最轻量。

# 在项目目录创建名为 .venv 的虚拟环境
python -m venv .venv

# 激活(Linux / macOS)
source .venv/bin/activate

# 激活(Windows,PowerShell)
.venv\Scripts\Activate.ps1

# 激活后,pip 装的包只进这个环境
pip install requests==2.31.0

# 退出环境
deactivate

激活后命令行前面会出现 (.venv) 前缀,提醒你"现在在这个房间里"。

三、conda:不止 Python 的环境管理器

conda(来自 Anaconda / Miniconda)更强的地方在于:它能管非 Python 的依赖,比如 CUDA、C++ 库、R 语言包。做数据科学、机器学习的同学基本离不开它。

# 创建环境并指定 Python 版本
conda create -n myenv python=3.11

# 激活
conda activate myenv

# 安装(conda 渠道没有的,也可以走 pip)
conda install numpy
pip install some-pure-python-lib

# 退出
conda deactivate

# 导出环境,方便别人复现
conda env export > environment.yml

四、怎么选:一张表说清

维度 venv conda
是否需额外安装 否(Python 自带) 是(装 Miniconda/Anaconda)
管 Python 包
管非 Python 依赖 ✅(CUDA、C 库等)
体积 / 启动 重一些
适合人群 Web 开发、脚本、普通后端 数据科学、ML、要混编语言
环境文件 requirements.txt environment.yml

我的经验法则

  • 写 Web 服务、小工具、后端接口 → venv 足够,别折腾 conda,简单干净。
  • 搞机器学习、要装 PyTorch 且依赖特定 CUDA → conda 更省心,它帮你把底层依赖一起对齐。
  • 团队项目 → 记得把环境文件(requirements.txtenvironment.yml)提交进 Git,别人 pip install -r / conda env create 一键复现。

五、新手常踩的坑

  • 忘了激活就装包:装完发现全局还是项目都跑不了,多半是没 activate,包装到了全局。
  • Windows 激活失败:PowerShell 默认禁止脚本执行,报"无法加载,因为禁止运行脚本",需要先 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned,或用 cmd 里的 .\.venv\Scripts\activate.bat
  • 把环境目录提交了 Git.venv/ 或 conda 环境目录别传仓库,用 .gitignore 忽略,只传 requirements.txt
  • conda 里又用 pip 装了一堆:可以混用,但建议 conda 装不下的才用 pip,且先 conda 后 pip,避免依赖树打架。

六、小结

虚拟环境不是可选项,是必选项。普通开发用 venv 足够轻快;数据/ML 场景用 conda 省去底层依赖的麻烦。记住两条:每个项目一个环境 + 环境文件进 Git,基本上就不会再遇到"在我机器上能跑"的尴尬了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。