Python 虚拟环境入门:从混乱到干净的项目隔离

举报
yd_274862470 发表于 2026/10/26 16:25:48 2026/10/26
【摘要】 很多 Python 新手都有过类似经历:A 项目要用 requests 的旧版本,B 项目却要求新版本;换一台电脑跑代码,明明装过依赖,运行时还是报错。问题往往不在代码本身,而在环境没有隔离。虚拟环境就是为每个项目准备一个独立的 Python 运行空间,让依赖互不干扰。 虚拟环境是什么可以把系统 Python 理解成公共厨房,把虚拟环境理解成每个项目自己的小厨房。创建虚拟环境后,解释器、pi...

很多 Python 新手都有过类似经历:A 项目要用 requests 的旧版本,B 项目却要求新版本;换一台电脑跑代码,明明装过依赖,运行时还是报错。问题往往不在代码本身,而在环境没有隔离。虚拟环境就是为每个项目准备一个独立的 Python 运行空间,让依赖互不干扰。

虚拟环境是什么

可以把系统 Python 理解成公共厨房,把虚拟环境理解成每个项目自己的小厨房。创建虚拟环境后,解释器、pip 和已安装的包都会放在项目专属目录里。在这个环境里安装、升级或删除包,只影响当前项目,不会动系统 Python,也不会影响其他项目。需要说明的是,虚拟环境并不是容器,也不是虚拟机,它更轻量,创建和删除都很快,适合日常开发。

创建与激活

Python 3.3 之后自带 venv,不需要额外安装。先进入项目目录,再创建名为 .venv 的环境:

python -m venv .venv

创建完成后需要激活。Windows 上常用 PowerShell 命令是:

.venv\Scripts\Activate.ps1

macOS 和 Linux 上则是:

source .venv/bin/activate

激活成功后,终端提示符前面会出现 (.venv)。这时再用 python 和 pip,用的就是虚拟环境里的版本。退出时输入 deactivate 即可。判断是否激活,最直观的方法是看提示符,也可以执行 which python 或 where python,确认路径指向项目目录下的 .venv。

安装依赖与固定版本

激活后安装包的姿势和平时一样,例如 pip install requests。但只安装还不够,团队协作时还要固定版本,否则别人装到的可能是更新的版本。常用做法是把依赖写进 requirements.txt:

pip freeze > requirements.txt

新环境还原时执行 pip install -r requirements.txt。需要注意,pip freeze 会列出所有已安装的包,包括间接依赖,文件可能比较长。小型项目可以直接使用,稍大的项目可以只手写直接依赖,再配合锁定工具管理间接依赖。把 requirements.txt 提交到版本控制,把 .venv 排除在外,是更干净的做法。

常见问题

第一,Windows 激活被阻止。PowerShell 默认执行策略可能禁止运行脚本,可以先检查策略设置,确认当前用户允许本地脚本后再激活,不要为了图省事随意放宽到全局不受限。第二,提示找不到模块。先确认终端是否已激活虚拟环境,再确认安装和运行用的是同一套解释器,很多问题都是编辑器选了系统 Python,而终端装在虚拟环境里。第三,包版本冲突。不要反复用新版本覆盖旧版本,先看报错里冲突的包名和版本范围,必要时新建一个干净环境重装,比在脏环境里修补更省时间。第四,.venv 越来越大。虚拟环境本身不需要提交,删除后随时可以按 requirements.txt 重建。

养成三条习惯

一是每个项目一个环境,项目一开始就创建,不要等到冲突了才补。二是把 .venv 加入 .gitignore,只提交代码和依赖清单。三是换电脑或交接项目时,先验证能否从 requirements.txt 完整还原,再说环境没问题。虚拟环境不是高深技术,而是一种秩序感:它把每个项目的依赖边界划清楚,后续调试、升级和协作都会轻松很多。从今天起,给每个新项目先建一个虚拟环境,你会发现很多莫名其妙的报错其实早就消失了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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