激活与退出 Python 虚拟环境

在同一台电脑上并行开发多个 Python 项目时,最常见的做法是为每个项目创建独立的虚拟运行环境,避免不同依赖版本之间的冲突。

虚拟环境的创建方法不在本篇讨论范围,可参阅为 Python 项目创建独立虚拟运行环境

# 进入项目根目录(假设 .env 与代码位于同级目录)
cd /path/to/project

# 方式一:经典写法(最通用)
source .env/bin/activate

# 方式二:使用点号缩写
. .env/bin/activate

激活成功后,命令行提示符通常会自动加上 (.env) 前缀:

(.env) user@MacBook project %
cd C:\path\to\project
.env\Scripts\activate

在 PowerShell 中脚本执行策略可能阻止激活脚本运行,可先放宽当前会话策略:

# 可选:仅对当前会话生效
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

# 激活虚拟环境
.\.env\Scripts\Activate.ps1

venv 会自动生成针对不同 Shell 的脚本。例如在 fish 中:

source .env/bin/activate.fish
  1. 提示符变化:前缀出现 (.env)
  2. which python / where python 显示路径指向 .env 目录:
    $ which python
    /absolute/path/to/project/.env/bin/python
    
  3. python -m pip list 应只列出当前环境已安装的依赖。
deactivate

执行后提示符前缀消失,系统将回到全局(或上一级) Python 解释器。

症状 可能原因 解决方案
source: command not found 使用了不支持 source 的 Shell(如 fish) 使用对应的 activate.fish / .csh 脚本,或切换到 bash/zsh
Activate.ps1 cannot be loaded because running scripts is disabled on this system PowerShell 脚本执行策略过于严格 运行 Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned 后重试
激活后提示符无变化 终端主题或自定义 PS1 覆盖 通过执行 which python 检查路径确认是否已激活

推广:阿里云百炼大模型 9折优惠 + 所有模型各百万免费Token →