Python 虚拟环境 venv 入门:创建、激活、装包与项目依赖隔离
为什么需要虚拟环境
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”的习惯,比事后排查版本冲突要省心得多。
- 点赞
- 收藏
- 关注作者
评论(0)