Python 虚拟环境入门:venv 与 conda 对比与使用指南

举报
yd_272299389 发表于 2026/11/14 06:25:51 2026/11/14
【摘要】 刚开始学 Python 时,很多人都遇到过这样的尴尬:昨天还能跑的项目,今天换一个项目就报错——不是某个库版本冲突,就是依赖装错了地方。根源往往不在代码本身,而在于所有项目共用同一个全局 Python 环境。虚拟环境正是为此而存在的:它为每个项目创建一套独立的解释器和依赖,让项目之间互不干扰。 一、为什么需要虚拟环境全局环境里装的包越多,依赖冲突越容易出现。比如项目 A 需要 request...

刚开始学 Python 时,很多人都遇到过这样的尴尬:昨天还能跑的项目,今天换一个项目就报错——不是某个库版本冲突,就是依赖装错了地方。根源往往不在代码本身,而在于所有项目共用同一个全局 Python 环境。虚拟环境正是为此而存在的:它为每个项目创建一套独立的解释器和依赖,让项目之间互不干扰。

一、为什么需要虚拟环境

全局环境里装的包越多,依赖冲突越容易出现。比如项目 A 需要 requests 2.28,项目 B 需要 requests 2.31,都装在全局环境里,后装的会覆盖先装的,总有一个项目会出问题。虚拟环境把依赖隔离开,A 用自己的 2.28,B 用自己的 2.31,互不影响;再导出一份依赖清单,换台机器照着装就能还原环境。

二、venv:Python 官方自带方案

venv 是 Python 3.3 起内置的标准库,无需额外安装,轻量、简单,是大多数纯 Python 项目的首选。创建环境:python -m venv .venv。激活:Windows 执行 .venv\Scripts\activate,macOS/Linux 执行 source .venv/bin/activate,成功后命令行前会出现 (.venv) 标识。激活状态下安装依赖并导出清单:pip install requests,pip freeze > requirements.txt;退出只需 deactivate。需要注意,venv 只包含解释器和 pip,依赖 NumPy、SciPy 这类需要编译的库时,安装可能会比较耗时。

三、conda:面向数据科学的方案

conda 是 Anaconda/Miniconda 提供的包与环境管理器,不仅能管理 Python 包,还能管理 C 库、R 包等非 Python 依赖,对数据科学和机器学习项目尤其友好。conda create -n myenv python=3.11,conda activate myenv,conda install numpy pandas,conda env export > environment.yml。不过 conda 环境体积较大,首次安装也比较占空间;只写脚本或做 Web 开发时,用 conda 未免大材小用。

四、venv 与 conda 怎么选

venv 是官方标准库,零安装成本,环境轻量,只管理 Python 包,适合 Web 开发、脚本工具和一般应用开发;conda 需要单独安装,环境较重,但能管理 Python 之外的依赖,预编译的科学计算包安装成功率更高,适合数据分析、机器学习和科研场景。两者也可结合:用 conda 创建环境,再用 pip 装 conda 仓库里没有的包,但要优先使用 conda 安装,避免依赖冲突。

五、使用虚拟环境的好习惯

第一,每个项目一个环境,目录一般命名为 .venv,并写进 .gitignore,避免把几百兆的环境文件提交到 Git 仓库。第二,随手导出依赖清单,venv 用 pip freeze > requirements.txt,conda 用 conda env export > environment.yml。第三,定期清理不用的环境,conda 用 conda env remove -n 旧环境名,venv 直接删除目录即可。

虚拟环境不是什么高深的技术,却是 Python 开发中最值得养成的习惯之一。花十分钟掌握 venv 或 conda,就能把“在我机器上明明能跑”这类问题消灭在萌芽阶段。从下一个项目开始,就为它创建一个专属的虚拟环境吧。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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