Python虚拟环境 (.venv)

1. .venv 的结构

当你运行 python -m venv .venv 后,项目目录下会生成一个名为 .venv 的文件夹。其内部核心构造如下:

  • pyvenv.cfg:环境的“身份证”。记录了该虚拟环境指向的原始 Python 解释器路径以及是否允许调用系统全局包
  • bin/ (Linux/WSL 2) 或 Scripts/ (Windows):存放激活脚本(activate)和当前环境专用的 pythonpip 可执行文件
  • lib/python3.x/site-packages/:这是该环境的“书架”,所有通过 pip install 安装的第三方库(如 PyYAML)都物理存放在这里

-m 代表 modmodule-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. 管理依赖

激活环境后,安装的包将被锁定在局部空间:

  1. 安装: pip install pyyaml
  2. 导出清单: pip freeze > requirements.txt
  3. 一键复现: pip install -r requirements.txt(这是你在新机器上重建环境的标准做法)

3. VS Code 与 WSL 2 的集成

可以使用 VS Code 远程连接 WSL 2 进行开发,VS Code 提供了一套自动识别机制:

  1. 自动识别:当你打开一个包含 .venv 的文件夹时,VS Code 通常会弹窗询问是否将其设为工作区环境
  2. 手动指定:按下 Ctrl+Shift+P,输入 Python: Select Interpreter
  3. 路径指向:在列表中选择带有 ./.venv/bin/python 标识的选项
  4. 结果:配置完成后,VS Code 下方的状态栏会显示当前环境,且内置终端在新建时会自动执行 source .venv/bin/activate

4. 最佳实践与注意事项

什么时候该抛弃 .venv 转向 Conda?

  1. 需要特定版本的 Python:.venv 创建环境时依赖系统现有的 Python。如果系统是 3.10,你无法直接通过 .venv 创建一个 3.8 的环境
  2. 非 Python 依赖:如果项目需要特定版本的 CUDA 或 C++ 库,.venv 无法处理

常见问题:Pip 权限报错

在虚拟环境下,严禁使用 sudo pip install

  • 如果你在激活环境后遇到权限问题,通常是因为该文件夹的所属用户不是你
  • 直接运行 pip install 即可,它会将包写入你拥有权限的 .venv/lib 目录下