什么是虚拟环境

Python 虚拟环境是一个独立的 Python 运行环境,拥有自己的 Python 解释器副本和独立的 site-packages 目录。每个虚拟环境之间互不干扰,适合在不同项目中使用不同版本的依赖包。

创建虚拟环境

# 在项目目录下创建名为 myenv 的虚拟环境
python3 -m venv myenv

# 指定 Python 版本(需要系统已安装对应版本)
python3.12 -m venv myenv

创建后的目录结构:

myenv/
├── bin/
│   ├── python -> /usr/bin/python3.12
│   ├── pip
│   └── activate
├── include/
├── lib/
│   └── python3.12/
│       └── site-packages/
└── pyvenv.cfg
  • pyvenv.cfg:记录虚拟环境的配置信息(Python 版本、系统 site-packages 是否包含等)
  • bin/activate:激活脚本
  • lib/python3.12/site-packages/:虚拟环境独立的包安装目录

激活虚拟环境

# Linux / macOS
source myenv/bin/activate

# 激活后终端提示符前会出现 (myenv) 标识
(myenv) user@host:~/project$

退出虚拟环境

deactivate

删除虚拟环境

rm -rf myenv/

常见问题

VSCode 终端自动激活虚拟环境

现象:在 VSCode 中打开项目后,终端自动显示 (myenv),即使没有手动执行过 source myenv/bin/activate。

原因:VSCode 的 Python 扩展会自动检测工作目录下的虚拟环境文件夹(如 venv、myenv、.venv 等),并在打开新终端时自动激活。这与是否运行 colcon 或其他命令无关。

解决方法(任选一种):

  1. 关闭自动激活:在 VSCode 设置中添加:

    "python.terminal.activateEnvironment": false
    
  2. 手动选择系统解释器:Ctrl+Shift+P → Python: Select Interpreter → 选择 /usr/bin/python3。

  3. 删除不需要的虚拟环境(myenv 是创建虚拟环境时自己定的名字,实际使用时替换成你的虚拟环境文件夹名):

    rm -rf myenv/
    
  4. 忽略虚拟环境文件夹(避免被 VSCode 检测到):在 .vscode/settings.json 中添加:

    "python.venvPath": "",
    "python.terminal.activateEnvironment": false
    

验证当前是否在虚拟环境中

# 方法 1:查看 VIRTUAL_ENV 环境变量
echo $VIRTUAL_ENV

# 方法 2:查看当前使用的 Python 路径
which python

如果输出包含虚拟环境路径(如 /home/lihao/chapt3/myenv),说明当前处于虚拟环境中。

更多推荐