Python内置venv模块创建与激活虚拟环境全流程

慢慢来
慢慢来
发布时间:2026-10-24| 6人浏览过
原创

Python 虚拟环境是现代 Python 项目开发的基础设施。通过 Python 3 自带的 venv 模块,开发者无需安装任何第三方工具,即可在本地项目目录中快速构建轻量、独立的运行环境,彻底避免多项目依赖版本冲突。

一、为什么需要虚拟环境与 venv 隔离机制

在没有虚拟环境的情况下,执行 pip install 安装的所有第三方包都会直接写入操作系统的全局 Python site-packages 目录中。当系统内同时存在多个项目时,若项目 A 依赖特定版本的框架,而项目 B 依赖该框架的更高版本,全局安装便会引发包版本覆盖与依赖断裂。

Python 3.3 起官方内置了 venv 标准模块。它的核心机制是在项目根目录下创建一个包含 Python 二进制软链接(或复制体)、独立 site-packages 目录及环境配置 pyvenv.cfg 的隔离沙盒。当虚拟环境被激活时,系统的 PATH 环境变量会被临时改写,使终端执行的 python 和 pip 优先指向虚拟环境内部目录,从而实现依赖隔离与环境洁净。

Python内置venv模块创建与激活虚拟环境全流程
图 1:全局 Python 环境与 venv 隔离环境的核心差异对比

二、创建虚拟环境标准步骤与参数配置

创建虚拟环境之前,请先在终端中打开项目所在的目标文件夹。执行创建操作只需调用当前系统的 Python 解释器并附加 -m venv 参数。

1. 确认 Python 解释器版本

由于 venv 创建的环境会直接绑定当前所调用的 Python 解释器版本,首先确认执行环境的 Python 版本:

# macOS / Linux
python3 --version

# Windows
python --version

2. 执行创建命令

在项目根目录下运行如下命令创建虚拟环境目录。行业通用惯例是将环境目录命名为 .venv 或 venv(以点开头的名称可在很多编辑器中自动隐藏):

# 语法:python -m venv <环境目录名>
# 推荐实践(在当前项目目录下创建 .venv)
python3 -m venv .venv

注意:Debian / Ubuntu 系列 Linux 系统出于精简考虑,默认没有附带 venv 依赖包。如果运行提示 The virtual environment was not created successfully because ensurepip is not available,需先在系统终端执行 sudo apt install python3-venv 安装对应扩展包。

3. 常用可选参数

  • --without-pip:创建时不安装 pip 工具(适用于极简只读镜像或需要自定义包管理工具的场景)。
  • --system-site-packages:允许虚拟环境访问系统的全局 site-packages,同时优先使用虚拟环境内部新安装的包。
  • --clear:在创建前清空已存在的目标目录,用于重置环境。
Python内置venv模块创建与激活虚拟环境全流程
图 2:从创建到验证的完整步骤流向

三、多操作系统激活与内部目录结构对照

虚拟环境创建完成后,必须通过“激活”命令将其注入当前 Shell 会话中。不同操作系统由于文件系统规范与 Shell 差异,激活脚本的相对路径和命令格式存在差异。

操作系统 / 终端环境 Shell 类型 激活命令
macOS / Linux / WSL bash / zsh source .venv/bin/activate
macOS / Linux fish source .venv/bin/activate.fish
macOS / Linux csh / tcsh source .venv/bin/activate.csh
Windows PowerShell .venv\Scripts\Activate.ps1
Windows Command Prompt (cmd.exe) .venv\Scripts\activate.bat
Windows Git Bash source .venv/Scripts/activate

激活成功后,终端命令行提示符最前端通常会出现环境名称括号,例如 (.venv) user@host:~/project$。此时运行 which python(Windows 下使用 Get-Command python 或 where python)应显示路径位于 .venv 文件夹内。

Python内置venv模块创建与激活虚拟环境全流程
图 3:跨平台目录层次与激活入口差异对照

四、在虚拟环境中安装依赖与导出清单

激活虚拟环境后,安装的所有第三方库均仅保存在该环境内部的 site-packages 中:

# 安装项目所需的依赖包
pip install requests

# 确认当前环境已安装的包列表及版本
pip list

在团队协作或部署阶段,切勿将整个 .venv 文件夹打包发送。因为虚拟环境内部的脚本和配置文件中写入了绝对路径,并且二进制链接高度绑定当前机器架构。标准做法是导出依赖清单文本文件:

# 导出当前虚拟环境中的精确依赖清单
pip freeze > requirements.txt

# 在新机器或其他成员环境中批量复现安装
pip install -r requirements.txt

五、退出与清理虚拟环境

完成开发工作后,若需要返回系统默认环境,直接执行内置的 deactivate 函数即可:

# 退出当前激活的虚拟环境
deactivate

退出后,命令提示符前的 (.venv) 标记会消失,PATH 环境变量自动恢复原状。

如果项目不再维护或环境配置异常需要重建,清理虚拟环境极为简单,直接删除该文件夹即可,无任何系统残留:

# macOS / Linux 清理命令
rm -rf .venv

# Windows PowerShell 清理命令
Remove-Item -Recurse -Force .venv

六、常见问题与工程实践注意事项

1. Windows PowerShell 报错禁止运行脚本

在 Windows PowerShell 中初次运行 Activate.ps1 时,常出现如下红字错误:
File ... Activate.ps1 cannot be loaded because running scripts is disabled on this system.
这是由于 Windows 默认执行策略为 Restricted。以管理员身份打开 PowerShell 或在当前用户权限下执行以下命令调整策略:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

2. 务必将虚拟环境目录加入 .gitignore

在 Git 代码仓库根目录的 .gitignore 文件中加入虚拟环境文件夹名称,避免几百兆的依赖包被提交到远程代码仓库中:

# .gitignore 示例内容
.venv/
venv/
ENV/
__pycache__/
*.pyc
Python内置venv模块创建与激活虚拟环境全流程
图 4:Python 项目开发中虚拟环境全生命周期闭环流程

七、总结

掌握 venv 是编写可维护、可交付 Python 代码的核心基本功。牢记三大核心指令:创建时的 python -m venv .venv,激活时的 source .venv/bin/activate(或 Windows 对应的激活脚本),以及结束时的 deactivate。配合 pip freeze 输出依赖清单并将 .venv/ 加入版本忽略规则,即可构建专业、规范且隔离性强的高质量开发环境。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。