Python 虚拟环境 venv 入门:创建、激活、装包与项目依赖隔离

举报
f841705799 发表于 2026/11/08 13:00:47 2026/11/08
【摘要】 本文介绍 Python 内置虚拟环境 venv 的入门用法:如何创建、激活虚拟环境,在环境中安装包,并用 requirements.txt 隔离和管理项目依赖,让每个项目拥有干净独立的运行环境。

为什么需要虚拟环境

Python 开发中,不同项目常常依赖同一个库的不同版本:项目 A 要 requests 2.28,项目 B 要 requests 2.32,全装进全局环境只能留下一个,迟早冲突。更麻烦的是,操作系统自带的 Python 还可能被系统工具依赖,乱装包可能影响系统本身。虚拟环境就是给每个项目一个独立的“沙盒”:独立的解释器入口、独立的 site-packages,项目之间互不干扰。

创建虚拟环境

Python 3.3 起内置了 venv 模块,不需要再装 virtualenv:

python3 -m venv .venv

这条命令会在当前目录创建一个 .venv 文件夹,里面是一份 Python 解释器的入口和一套干净的 site-packages。习惯上把目录命名为 .venv 或 venv,并把它写进 .gitignore,避免把几百 MB 的依赖提交进仓库。开始之前先用 python3 --version 确认版本,venv 是标准库,3.3 及以上版本都自带。

激活虚拟环境

创建之后需要“激活”,让当前终端使用环境里的解释器和 pip。Linux / macOS:

source .venv/bin/activate

Windows(PowerShell):

.venv\Scripts\Activate.ps1

激活后终端提示符前会出现 (.venv),这就是环境已生效的标志,此时 which python(Windows 用 where python)指向的就是 .venv 里的解释器。用完退出时输入 deactivate 即可回到全局环境。

一个常见坑:PowerShell 默认禁止运行脚本,激活会报执行策略错误。用管理员身份执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 后重试即可;嫌麻烦也可以改用 cmd 下的 activate.bat。

在环境里装包

激活状态下用 pip 安装的包只会进当前环境:

pip install requests
pip list

建议先升级 pip 本身:python -m pip install --upgrade pip,新版 pip 解析依赖更快、报错也更清晰。养成随时记录依赖的习惯:

pip freeze > requirements.txt

requirements.txt 就是这个项目的“依赖清单”。换一台机器或重建环境时,一条命令就能还原:

pip install -r requirements.txt

隔离项目依赖:一个完整流程

以一个新爬虫项目为例,完整流程只要几步:

mkdir my-spider && cd my-spider
python3 -m venv .venv
source .venv/bin/activate
pip install requests beautifulsoup4
pip freeze > requirements.txt

从此这个项目只认自己的 .venv。项目 A 用 requests 2.28、项目 B 用 2.32,各自独立,互不影响;删除项目时连同 .venv 一起删掉,不留任何残留。

常见问题

激活后 pip 还是全局的?先看提示符前有没有 (.venv),再用 which pip 确认路径。requirements.txt 里版本太多?pip freeze 会把间接依赖也列出来,锁定版本虽然长一点,但重建环境时更稳妥。虚拟环境能直接移动吗?不能,路径写死在激活脚本里;正确做法是删掉重建,再 pip install -r requirements.txt。VS Code 怎么用?打开项目后按 Ctrl+Shift+P 选择“Python: Select Interpreter”,指向 .venv/bin/python,终端会自动激活。

小结

venv 是 Python 官方提供的轻量隔离方案:创建(python -m venv)、激活(source …/activate)、装包(pip install)、冻结依赖(pip freeze),四个步骤就能让每个项目拥有干净独立的依赖环境。对刚入门的开发者来说,先养成“一个项目一个 venv”的习惯,比事后排查版本冲突要省心得多。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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