Python 新手必会的虚拟环境 venv:从创建到避坑实战

举报
yd_245888483 发表于 2026/11/11 00:23:30 2026/11/11
【摘要】 Python 项目依赖打架,根源是共用同一个环境。用 venv 给每个项目单独开环境:创建、激活、装包、冻结、退出的完整流程一次讲清,再避开没激活就装包、把 .venv 提交仓库、用错 Python 版本这 3 个坑。

学 Python 最常见的翻车现场:教程里 pip install 装得好好的,换个项目就报错;或者给新项目装了个库,旧项目直接跑不起来。问题往往不在代码,而在所有项目共用同一个 Python 环境。虚拟环境 venv,就是给每个项目单独开一间“小房间”,库互不打架。

为什么一定要用虚拟环境

第一,隔离依赖。A 项目要用 requests 2.28,B 项目要用 2.31,同一个环境里只能装一个版本,迟早有人要妥协;分开后各用各的,谁也不影响谁。

第二,干净可复现。环境里的包装进 requirements.txt,换台电脑照单全装,别人接手项目也不用猜你装了什么。

第三,不污染系统 Python。系统自带工具也依赖系统 Python,在里面乱装乱升级,可能把系统工具搞坏,却很难排查。

完整流程:创建、激活、装包、退出

在项目根目录创建环境,名字习惯用 .venv:

python -m venv .venv

激活它。Windows 和 macOS/Linux 命令不一样:

# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

激活成功后,命令行提示符前面会出现 (.venv),这就是你在虚拟环境里的标志。然后再装包,并把版本冻住:

python -m pip install --upgrade pip
pip install requests
pip freeze > requirements.txt

用完退出,一个命令:

deactivate

在新电脑上复现也一样:创建、激活、按清单装包,三步就够:

pip install -r requirements.txt

新手常踩的 3 个坑

坑一:在没激活的环境里装包。装的时候很顺利,运行时 import 却找不到,因为包装进了全局环境,项目用的 venv 里根本没有。装包前先看提示符有没有 (.venv),不确定就用 pip -V 或 which python 看看路径是不是项目下的 .venv。

坑二:把 .venv 提交到 Git 或打包发给别人。虚拟环境体积大,还包含本机的绝对路径,别人拿到也用不了。正确做法是在 .gitignore 里加一行 .venv/,仓库里只留 requirements.txt。

坑三:用错 Python 版本创建环境。python 指向系统旧版本,建出来的 venv 自然也是旧版;或者装了新版 Python 却一直用旧的 python 创建,版本问题会一直跟到项目里。创建前先 python --version 确认,需要指定版本就用 python3.11 -m venv .venv 这样的形式。如果不同项目需要不同的 Python 大版本,venv 本身管不了版本,要配合 pyenv 或 conda。

记住一句话

一个项目一个 venv,激活了再装包,.venv 不进仓库。养成这个习惯,换电脑、换项目、接手别人的项目,都是创建、激活、装包三条命令的事,出问题的概率会少一大半。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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