Python 虚拟环境的核心操作

虚拟环境是 Python 项目开发的必备工具,它能为每个项目创建独立的包环境,避免不同项目之间的依赖冲突。

下面以最常用的 venv 模块(Python 3.3+ 内置)为例,讲解核心操作。


一、创建虚拟环境

# 进入项目目录
cd my_project

# 创建虚拟环境(venv 是环境名,可自定义)
python -m venv venv

执行后,会生成一个 venv/ 文件夹,里面包含独立的 Python 解释器和 pip。


二、激活虚拟环境

激活后,终端前缀会显示环境名称,pythonpip 指向环境内的版本。

Windows (cmd)
venv\Scripts\activate
Windows (PowerShell)
venv\Scripts\Activate.ps1

如果遇到执行策略错误,可先运行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

macOS / Linux
source venv/bin/activate

激活成功后,命令行提示符前会出现 (venv)


三、安装包(在激活的环境下)

# 安装具体包
pip install requests

# 安装指定版本
pip install flask==2.3.2

# 从 requirements.txt 批量安装
pip install -r requirements.txt

四、记录依赖(生成 requirements.txt)

pip freeze > requirements.txt

这个文件记录了当前环境中所有包的精确版本,便于在其他环境(如服务器、同事电脑)中重现相同环境。


五、退出虚拟环境

deactivate

之后命令提示符恢复正常。


六、删除虚拟环境

直接删除虚拟环境文件夹即可:

# Windows / macOS / Linux 通用
rm -rf venv

七、核心操作速查表

操作 命令(Windows cmd) 命令(macOS/Linux)
创建环境 python -m venv venv 同左
激活环境 venv\Scripts\activate source venv/bin/activate
退出环境 deactivate deactivate
安装包 pip install <package> 同左
导出依赖 pip freeze > requirements.txt 同左
根据依赖安装 pip install -r requirements.txt 同左
删除环境 rmdir /s venv rm -rf venv

这两个命令是 Python 虚拟环境的核心操作,分别负责创建激活虚拟环境。下面详细解释它们。


一、python -m venv venv

作用

创建一个新的虚拟环境。它会在当前目录下生成一个名为 venv 的文件夹,里面包含了一套独立、隔离的 Python 运行环境。

拆解说明

部分 含义
python 当前系统中使用的 Python 解释器(可能是 python3,取决于系统别名)。
-m module 的缩写,表示运行一个 Python 模块作为脚本(而不是执行一个 .py 文件)。
venv Python 标准库中的 venv 模块,专门用于创建虚拟环境。
最后一个 venv 目标目录名,即虚拟环境的存放路径。你可以改成任何名字,比如 .venvmyenv 等。

执行后发生了什么?

  1. 在当前目录下创建一个名为 venv 的文件夹。
  2. venv 文件夹内复制或链接一个独立的 Python 解释器(具体方式取决于操作系统和 Python 版本)。
  3. 创建独立的 site-packages 目录,将来用 pip 安装的第三方包都会放在这里。
  4. 生成激活脚本(Windows 下在 venv\Scripts\,Linux/macOS 下在 venv/bin/)。

常用变体

  • 指定 Python 版本:python3.11 -m venv venv(如果系统安装了多个 Python 版本)
  • 创建时不继承全局已安装的包:--without-pip(不会自动安装 pip,极少用)

二、venv\Scripts\activate

作用

激活虚拟环境。运行这个脚本后,当前的命令行会话(shell)会切换到虚拟环境,后续的 pythonpip 命令都会使用虚拟环境中的解释器和包,而不是全局的。

拆解说明

  • venv\Scripts\:虚拟环境目录下的 Scripts 文件夹(Windows 特有命名,Linux/macOS 下是 venv/bin/)。
  • activate:没有扩展名,但实际是一个可执行脚本(Windows 批处理脚本 activate.bat 或 PowerShell 脚本 Activate.ps1)。

激活后发生了什么?

  • 修改环境变量 PATH:将 venv\Scripts 添加到路径的最前面,这样系统会优先找到虚拟环境中的 python.exepip.exe
  • 设置 VIRTUAL_ENV 环境变量,指向虚拟环境的根目录,供其他工具识别。
  • 命令行提示符通常会增加 (venv) 前缀,提醒你当前处于虚拟环境中。

激活脚本的变体

操作系统 Shell 命令
Windows cmd venv\Scripts\activate.bat 或直接 venv\Scripts\activate(会调用 .bat)
Windows PowerShell venv\Scripts\Activate.ps1(可能需要先执行 Set-ExecutionPolicy RemoteSigned
Linux/macOS bash/zsh source venv/bin/activate

退出虚拟环境

在激活的环境中执行 deactivate 即可退出,恢复使用全局环境。


三、为什么需要这两步?

  1. 创建python -m venv venv)是一次性操作,为项目搭建隔离环境。
  2. 激活activate)是每次打开新终端时需要做的,告诉当前终端使用哪个环境。

两者缺一不可:只创建不激活,你仍然在使用全局环境;只激活但之前没有创建,激活脚本不存在。


四、常见问题与注意事项

Q:为什么在 Windows 上直接输入 venv\Scripts\activate 就能工作?

A:Windows 命令提示符(cmd)会识别 activateactivate.bat 并执行它,.bat 扩展名可以省略。

Q:激活后运行 python,怎么确认用的是虚拟环境里的?

A:运行 where python(Windows)或 which python(Linux/macOS),看路径是否指向 venv 目录下。

Q:每次进入项目都要激活吗?

A:是的,每个终端会话需要单独激活。你也可以在 VS Code 等 IDE 中配置默认解释器为虚拟环境中的 python.exe,这样终端打开时会自动激活。

Q:虚拟环境创建后,可以移动文件夹位置吗?

A:不建议。因为激活脚本中硬编码了绝对路径。如果必须移动,需要修改脚本中的路径变量,或删除后重新创建。


五、完整工作流示例

# 1. 创建项目目录
mkdir myproject
cd myproject

# 2. 创建虚拟环境
python -m venv venv

# 3. 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# 4. 安装依赖(现在会装到 venv 中)
pip install fastapi

# 5. 运行 Python 脚本(使用虚拟环境的解释器)
python main.py

# 6. 退出虚拟环境
deactivate

八、最佳实践提醒

  1. 虚拟环境放在项目根目录,通常命名为 venv.venvenv,并添加到 .gitignore(不提交到版本库)。
  2. 每次开发新项目,先创建新虚拟环境,避免污染全局 Python。
  3. 不要手动修改 venv/ 内的文件,只用 pip 管理包。
  4. 使用 Python 3 的 venv,不要再使用过时的 virtualenv(除非需要 Python 2 兼容)。
  5. IDE 集成:VSCode、PyCharm 等能自动识别虚拟环境,选择 venv/bin/python 作为解释器即可。

掌握以上操作,你就能轻松管理任何 Python 项目的依赖环境了。下一步可以学习 pipenvpoetry 等更高级的依赖管理工具,但 venv + requirements.txt 足够应对绝大多数场景。

总结

命令 作用 执行频率
python -m venv venv 创建虚拟环境(生成独立文件夹) 每个项目一次
venv\Scripts\activate 激活虚拟环境(修改 PATH 和环境变量) 每次打开新终端时需要

理解这两个命令,就掌握了 Python 项目环境隔离的基础。这在团队协作、项目部署以及避免依赖冲突中至关重要。

更多推荐