1. .venv 的结构
当你运行 python -m venv .venv 后,项目目录下会生成一个名为 .venv 的文件夹。其内部核心构造如下:
pyvenv.cfg:环境的“身份证”。记录了该虚拟环境指向的原始 Python 解释器路径以及是否允许调用系统全局包bin/(Linux/WSL 2) 或Scripts/(Windows):存放激活脚本(activate)和当前环境专用的python、pip可执行文件lib/python3.x/site-packages/:这是该环境的“书架”,所有通过pip install安装的第三方库(如PyYAML)都物理存放在这里
-m 代表 mod 或 module-name,-m 选项告诉 Python 解释器将一个模块作为脚本(Script)来运行
2. 操作
A. 创建环境
在项目根目录下执行:
1 | python3 -m venv .venv |
注:在 WSL 2 中,通常建议显式指定 python3
B. 激活环境 (Activation)
激活的本质是修改当前终端的 环境变量 (PATH),让系统优先从 .venv/bin 中寻找 python 命令
- WSL 2 / Linux:
1 | source .venv/bin/activate |
- Windows PowerShell:
1 | .\.venv\Scripts\Activate.ps1 |
激活成功后,你的终端提示符前通常会出现 (.venv) 字样
C. 管理依赖
激活环境后,安装的包将被锁定在局部空间:
- 安装:
pip install pyyaml - 导出清单:
pip freeze > requirements.txt - 一键复现:
pip install -r requirements.txt(这是你在新机器上重建环境的标准做法)
3. VS Code 与 WSL 2 的集成
可以使用 VS Code 远程连接 WSL 2 进行开发,VS Code 提供了一套自动识别机制:
- 自动识别:当你打开一个包含
.venv的文件夹时,VS Code 通常会弹窗询问是否将其设为工作区环境 - 手动指定:按下
Ctrl+Shift+P,输入Python: Select Interpreter - 路径指向:在列表中选择带有
./.venv/bin/python标识的选项 - 结果:配置完成后,VS Code 下方的状态栏会显示当前环境,且内置终端在新建时会自动执行
source .venv/bin/activate
4. 最佳实践与注意事项
什么时候该抛弃 .venv 转向 Conda?
- 需要特定版本的 Python:
.venv创建环境时依赖系统现有的 Python。如果系统是 3.10,你无法直接通过.venv创建一个 3.8 的环境 - 非 Python 依赖:如果项目需要特定版本的 CUDA 或 C++ 库,
.venv无法处理
常见问题:Pip 权限报错
在虚拟环境下,严禁使用 sudo pip install
- 如果你在激活环境后遇到权限问题,通常是因为该文件夹的所属用户不是你
- 直接运行
pip install即可,它会将包写入你拥有权限的.venv/lib目录下