深度学习入门必懂:虚拟环境的作用与 Conda / pip / venv 的区别

引言

在学习深度学习的过程中,很多初学者都会遇到这样一个问题:

“我的代码在我电脑上能跑,但换一台电脑就报错。”

“我装了 PyTorch,但 import torch 时提示找不到模块。”

“为什么我明明安装了库,Jupyter 里却用不了?”

这些问题的根源,往往不是代码写错了,而是环境配置混乱

本文将用清晰、简洁的方式,解释:

  • 什么是虚拟环境?
  • 为什么它对深度学习如此重要?
  • Conda、pip、venv 三者到底有什么区别?
  • 如何正确使用它们?

【话不多说先安装,无需提前装python,miniconda自带】

 miniconda下载地址:https://docs.conda.io/en/latest/miniconda.html

conda create -n yolo python=3.10 -y  #名字可以自己定义
conda activate yolo
python -m pip install --upgrade pip
pip install ultralytics  #所有下载慢的包都可以加清华源↓
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

一、什么是虚拟环境?为什么需要它?

虚拟环境(Virtual Environment)是一种隔离的 Python 运行环境

你可以把它理解为:

在你的电脑里,为每个项目单独开辟一个“小房间”,每个房间有自己的 Python 解释器、安装的库和版本。

举个例子:

假设你有两个项目:

  • 项目A:使用 PyTorch 1.12 和 Python 3.8
  • 项目B:使用 PyTorch 2.3 和 Python 3.10

如果你直接在系统全局安装这些库,会发生:

  • 安装 PyTorch 2.3 时,会覆盖掉 1.12
  • 项目A 就无法运行了
  • 如果你再装别的库,版本冲突会越来越多

这就是所谓的“依赖地狱”。

虚拟环境的作用,就是让每个项目拥有独立的“运行空间”,互不干扰。


二、三种常见的环境管理工具:venv、pip、Conda

工具 类型 能力范围 适用场景
venv Python 内置虚拟环境工具 只能管理 Python 包 纯 Python 项目(如脚本、爬虫)
pip Python 包管理器 只能安装 Python 包(.whl / .tar.gz) 安装单个库,如 pip install numpy
Conda 环境 + 包管理器 可管理 Python 包、C++ 库、CUDA、编译器等 深度学习、科学计算、多语言依赖项目

1. venv:轻量,但能力有限

venv 是 Python 3.3+ 自带的工具,使用简单:

python -m venv myenv        # 创建环境
source myenv/bin/activate   # Linux/macOS 激活
myenv\Scripts\activate      # Windows 激活
pip install numpy           # 安装包
deactivate                  # 退出

✅ 优点:无需额外安装,轻量、标准
❌ 缺点:只能管理 Python 包,不能安装 CUDA、cuDNN、GCC 等系统级依赖

👉 适合:写脚本、数据分析、不需要 GPU 的项目


2. pip:包安装工具,不是环境管理器

pip 是 Python 的包安装工具,常被误认为是“环境管理器”。

pip install torch torchvision torchaudio

它只负责下载并安装包不关心版本兼容性,也不管理环境。

⚠️ 重要提醒:

  • pip 不能创建环境 → 必须配合 venvconda
  • pip 安装的包,可能与其他包版本冲突
  • 不要在全局环境中用 pip 安装大量包,否则极易污染系统

👉 适合:在已激活的虚拟环境中,补充安装 Python 包


3. Conda:深度学习的首选工具

Conda 是一个跨平台的环境与包管理器,最初为科学计算设计,现已成为 AI 开发的标准工具。

它不仅能管理 Python 包,还能:

💡 建议:conda install -c conda-forge package_name 通常能解决很多“找不到包”的问题,例如conda install -c conda-forge numpy。

  • 安装 CUDA、cuDNN、OpenBLAS、GCC 等非 Python 依赖
  • 自动解决版本冲突(如:PyTorch 2.3 + CUDA 12.1 + Python 3.10)
  • 支持多个独立环境,互不干扰
  • Conda 依赖 channels(如 defaults, conda-forge)。如果没配置好,默认通道可能没有你需要的包或版本。
  • 新用户可能不知道要加 -c conda-forge,导致安装失败。
conda create --name dl-env python=3.10          # 创建环境
conda activate dl-env                           # 激活
conda install pytorch torchvision torchaudio cudatoolkit=12.1 -c pytorch  # 一键安装带 CUDA 的 PyTorch
conda env export > environment.yml              # 导出环境配置

✅ 优点:

  • 管理“全栈依赖”(从驱动到代码)
  • 版本兼容性由社区和官方保障
  • 环境可导出、可复现,科研必备

❌ 缺点:

  • 安装包较大(Miniconda 约 500MB)
  • 初学者可能觉得“太重”

👉 强烈推荐:所有深度学习项目,使用 Conda + Miniconda,但是基础常用的例如yolo系列的推理等可以pip安装。


三、Conda vs venv + pip:实际对比

场景 使用 venv + pip 使用 Conda
创建环境 python -m venv myenv conda create --name myenv python=3.10
安装 NumPy pip install numpy conda install numpy
安装 PyTorch + CUDA pip install torch(可能失败) conda install pytorch cudatoolkit=12.1 -c pytorch(推荐)
安装 OpenCV pip install opencv-python conda install opencv
导出环境 pip freeze > requirements.txt conda env export > environment.yml
复现环境 pip install -r requirements.txt conda env create -f environment.yml
是否支持 CUDA? ❌ 不能自动安装 ✅ 自动匹配版本

💡 关键结论
pip 只能装“软件包”,Conda 能装“整个系统”但是一般都是conda虚拟环境+pip混合conda,实际情况很灵动多变。


四、最佳实践建议

✅ 1. 使用 Miniconda,而非 Anaconda

  • Miniconda 只包含 Conda + Python,体积小、干净
  • Anaconda 预装几百个包,容易污染环境,不适合学习者(亲测没用)

下载地址:https://docs.conda.io/en/latest/miniconda.html

✅ 2. 每个项目一个环境

conda create --name project-a python=3.9
conda create --name project-b python=3.10

✅ 3. 激活环境后再安装包

conda activate project-a
conda install numpy jupyterlab

✅ 4. 注册 Jupyter 内核(解决“Jupyter 用不了当前环境”问题)

conda activate project-a
conda install ipykernel
python -m ipykernel install --user --name project-a --display-name "Python (project-a)"

重启 Jupyter 后,新建 Notebook 时即可选择该内核。

✅ 5. 导出并提交 environment.yml

conda activate project-a
conda env export > environment.yml #conda env create -f environment.yml安装所有包括虚拟环境名字
pip freeze > requirements.txt  # pip install -r requirements.txt只安装里面的包

environment.yml 和代码一起提交到 Git,确保他人可复现你的环境。

✅ 这是科研和工程协作的基本素养,github项目常见pip install -r requirements.txt。

❌ 禁止行为

  • 在全局环境中用 pip 安装大量包
  • 在 Conda 环境中用 pip 升级 Conda 安装的包(如 pip install --upgrade torch
  • 不使用环境,直接在系统 Python 上开发

五、总结:一句话记住核心

“一个项目,一个环境;一个环境,一个 yml 文件/txt文件。”

  • Conda 管理深度学习环境
  • conda create / activate / export 控制生命周期
  • ipykernel 让 Jupyter 认识你的环境
  • environment.yml 实现环境复现

从此,你不再说:“在我电脑上能跑。”
你会说:“我有 environment.yml,你运行 conda env create -f environment.yml 就能跑。”


推荐阅读


结语

环境配置不是“调参”或“写模型”那样的高阶技能,但它却是深度学习的第一道门槛

很多人放弃,不是因为学不会算法,而是被环境问题劝退,诚然我第一次接触的时候就发现这玩意以后肯定会踩很多坑。果不其然即便工作了后也会发现一些环境配置的问题,包括后续还有更方便的Docker也会慢慢分享出来。

掌握虚拟环境,不是为了“显得专业”,而是为了让你的代码真正跑得起来、传得出去、复现得了

从今天开始,为每一个项目创建独立环境。
你迈出的这一步,比你多写十行代码更有价值。


作者简介:Yuri,AI算法内容创作者,专注帮助初学者跨越深度学习的第一道技术门槛。
欢迎关注、点赞、收藏,下一期我们将使用这个环境,运行第一行真正的 AI 代码。


本文适合收藏、转发、作为学习笔记,也可直接用于课程参考资料。
如需 PPT 版本或 Markdown 源文件,可留言告知,我会提供下载链接。

更多推荐