← 返回文章列表

Python 虚拟环境完全指南:告别"依赖地狱"

发布于 2026-02-20

在刚开始接触 Python 时,我们通常习惯直接用 pip install 把所有需要的库都安装到系统的全局环境中。但随着项目越来越多,你迟早会遇到这样一个棘手的问题:版本冲突

假设你正在编写一个网络爬虫脚本,依赖某个特定旧版本的网络请求库;同时,你又在另一个文件夹里跑深度学习模型,需要最新版本的核心计算库。如果这两个库的底层依赖发生冲突,你的全局环境就会陷入混乱,导致代码昨天还能跑,今天就报错。

为了解决这个问题,我们需要引入 Python 虚拟环境(Virtual Environment)

什么是虚拟环境?

简单来说,虚拟环境就像是给每个 Python 项目建了一个独立的”沙盒”。在这个沙盒里,有独立的 Python 解释器和独立的第三方库文件夹。各个沙盒之间互不干扰,也绝不污染你电脑操作系统的全局 Python 环境。

工具选择

工具 适用场景 特点
venv 通用 Python 开发(推荐) 官方内置,零安装,轻量
conda 科学计算 / 机器学习 可管理非 Python 依赖(如 CUDA),但较重
virtualenv 需要兼容 Python 2 的老项目 venv 的前身,功能更多
uv 追求极速的现代项目 Rust 编写,比 pip 快 10-100 倍,2024 年新秀

本文重点介绍 venv,它是 Python 3.3+ 内置的标准方案,对于绝大多数项目来说完全够用。

动手实践:虚拟环境的生命周期

1. 创建虚拟环境

首先,打开终端并进入你的项目根目录。然后运行以下命令:

# Windows / macOS / Linux 通用
python -m venv .venv

小贴士:这里的 .venv 是虚拟环境文件夹的名字。强烈建议以 . 开头(如 .venv),这样它在大多数编辑器中会被隐藏,不会干扰你的项目文件视图。

2. 激活虚拟环境

创建好后,你需要”走入”这个沙盒。不同操作系统的激活命令有所不同:

激活成功后,你的命令行提示符最前方通常会出现 (.venv) 的字样,这就说明你现在所有的 pythonpip 操作都只会在这个沙盒里进行了。

PowerShell 执行策略问题: 如果提示”无法加载文件,因为在此系统上禁止运行脚本”,以管理员身份运行 Set-ExecutionPolicy RemoteSigned 即可。

3. 安装依赖与管理

现在你可以放心大胆地安装项目所需的库了:

pip install requests numpy

当你完成了一阶段的开发,准备将代码分享给别人,或者部署到其他电脑上时,你可以一键导出当前环境的所有依赖清单:

pip freeze > requirements.txt

pip list vs pip freeze pip list 以可读格式展示已安装的包;pip freeze 输出 包名==版本号 格式,专门用于生成 requirements.txt

别人拿到你的项目后,只需要创建一个新的虚拟环境,然后运行:

pip install -r requirements.txt

就可以完美复现你当时的开发环境。

4. 退出虚拟环境

当你在这个项目的开发告一段落,想要切换到其他项目时,只需要执行:

deactivate

命令行前方的 (.venv) 标志就会消失,你就退出了沙盒,回到了系统的全局环境中。

两个极其重要的好习惯

  1. 永远不要把虚拟环境提交到 Git 仓库! 虚拟环境文件夹(.venv)里面包含了大量的可执行文件和库,体积非常大,且通常与特定的操作系统绑定。请务必在你的 .gitignore 文件中添加:

    .venv/
    __pycache__/
    *.pyc
    
  2. 为每一个新项目创建一个独立的虚拟环境。 不要为了省事让多个项目共用一个虚拟环境,那和使用全局环境没有本质区别。

VS Code 集成

VS Code 会自动检测项目目录下的 .venv 文件夹。打开项目后,按 Ctrl+Shift+P 输入 “Python: Select Interpreter”,选择 .venv 中的 Python 解释器即可。之后在 VS Code 内置终端中打开新终端,虚拟环境会自动激活。

结语

掌握虚拟环境是每个 Python 开发者进阶的必经之路。它不仅能让你的电脑保持整洁,更是保证项目可复现性、提高团队协作效率的基础。下次新建项目文件夹时,记得敲下那句 python -m venv .venv

Happy Coding!

提示:鼠标移动会产生拖尾并影响周围粒子;按住 Alt 可切换吸引(Alt)/排斥(默认)效果。