🎯 学习目标

  • 理解虚拟环境的作用与重要性
  • 掌握venv创建和管理虚拟环境
  • 学会使用conda管理环境
  • 了解poetry等现代依赖管理工具
为什么需要虚拟环境?

不同项目可能需要不同版本的依赖库。如果没有虚拟环境,所有项目共享系统Python环境,会导致版本冲突。

示例:项目A需要numpy 1.21,项目B需要numpy 1.24,没有隔离就会产生冲突。

虚拟环境
图:虚拟环境为每个项目创建独立的依赖空间

🐍 venv - Python内置方案

创建与激活虚拟环境

# 创建虚拟环境 python -m venv .venv # 激活虚拟环境 # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate # 验证当前环境 which python # Linux/macOS where python # Windows # 退出虚拟环境 deactivate

虚拟环境常用操作

# 在虚拟环境中安装包 pip install numpy pandas matplotlib # 冻结依赖 pip freeze > requirements.txt # 从文件安装依赖 pip install -r requirements.txt # 删除虚拟环境(先退出) rm -rf .venv # Linux/macOS rmdir /s .venv # Windows

🌊 Conda - 数据科学首选

环境管理

# 创建新环境 conda create -n ai python=3.10 # 激活环境 conda activate ai # 列出所有环境 conda env list # 删除环境 conda remove -n ai --all # 导出环境 conda env export > environment.yml # 从文件创建环境 conda env create -f environment.yml

包管理

# 安装包 conda install numpy pandas # 安装指定版本 conda install numpy=1.24 # 从pip安装 pip install some-package # 列出已安装包 conda list # 更新包 conda update numpy # 搜索包 conda search scikit-learn

📊 venv vs conda 对比

特性 venv conda
来源 Python内置 Anaconda/Miniconda
管理范围 仅Python包 Python + 系统依赖
Python版本 固定 可切换不同版本
GPU支持 需要手动配置 内置CUDA/cuDNN管理
包数量 PyPI海量 conda-forge较全
适用场景 纯Python项目 数据科学/AI开发

📦 Poetry - 现代依赖管理

Poetry工作流

# 安装poetry pip install poetry # 初始化新项目 poetry new my-ai-project cd my-ai-project # 或在现有项目中初始化 poetry init # 添加依赖 poetry add numpy pandas poetry add torch --group dev # 开发依赖 # 安装所有依赖 poetry install # 运行命令 poetry run python train.py # 进入虚拟环境shell poetry shell
💡
Poetry优势

Poetry自动处理依赖冲突,生成锁文件确保可复现性,是现代Python项目管理的推荐方案。

⚙️ .gitignore配置

# .gitignore - 忽略虚拟环境目录 # venv .venv/ venv/ ENV/ # conda .conda/ # poetry .poetry/ # 其他 __pycache__/ *.pyc .ipynb_checkpoints/

📝 本节小结

  • • 虚拟环境隔离项目依赖,避免版本冲突
  • • venv是Python内置的轻量方案
  • • conda适合AI/数据科学开发,支持GPU依赖管理
  • • Poetry是现代项目的推荐依赖管理工具