04 · 包管理与项目版本管理

数据科学⭐⭐⭐⭐重要储备|约 6 分钟9 节1 图
本章目标

学会创建干净的虚拟环境、管理依赖、用 Git 记录代码演进——这是研究生阶段不被环境问题拖垮的关键。

本章路线
conda 与 Git 工作流
图 04-1conda 与 Git 工作流
04 · 包管理与项目版本管理

0. 小白导读:这一章在解决什么麻烦?

🍚生活化比喻

先听懂:这一章解决的是"厨房太乱"和"菜谱会丢"两个问题。

问题一:环境混乱。你给项目 A 装了 pandas 2.x,给项目 B 又需要 pandas 3.x——全装在一个地方,会互相打架(一个项目能跑,另一个就崩)。虚拟环境就是给每个项目一个独立的厨房,各用各的锅碗瓢盆,互不干扰。

问题二:代码丢失/改坏。你改了代码,改坏了,想回到昨天的版本——没记录就回不去了。Git 就是代码的"时光机 + 存档系统",每次改动都能存档,随时回退,还能多人协作。

一句话:虚拟环境管"装什么、在哪装",Git 管"改了什么、怎么找回"。


1. 为什么需要虚拟环境

问题:不同项目需要的包版本可能冲突。比如项目 A 需要 pandas 2.x,项目 B 需要 pandas 3.x——如果都装在全局环境里,会互相覆盖,导致项目崩溃。

解决方案:为每个项目创建独立的虚拟环境,各环境互不干扰。

💡提示

一句话:虚拟环境 = 每个项目一个"独立的 Python 房间",里面装什么包互不影响。


2. conda 环境管理

2.1 创建与激活环境

bash
# 创建环境(指定 Python 版本)
conda create -n tcm_nano python=3.13

# 激活环境(Windows)
conda activate tcm_nano

# 退出环境
conda deactivate

# 查看所有环境
conda env list

2.2 环境复制与删除

bash
# 复制环境
conda create -n tcm_nano_backup --clone tcm_nano

# 删除环境
conda remove -n tcm_nano --all
注意

每次新开终端都要先 conda activate tcm_nano,否则用的是 base 环境。


3. pip 包管理

bash
# 安装包
pip install numpy
pip install numpy pandas matplotlib

# 指定版本安装
pip install pandas==2.2.3

# 升级包
pip install --upgrade pandas

# 卸载包
pip uninstall pandas

# 查看已安装的包
pip list

# 查看某个包的版本
pip show pandas

3.1 conda 与 pip 怎么选?

场景 工具
安装数据科学常用包(numpy、pandas、scipy) conda(自动解决依赖冲突)
安装 conda 源里没有的包 pip
安装最新版本 pip
科研环境搭建 推荐 conda 装基础包 + pip 补漏
📌要点

2026 年版本建议:numpy 2.x、pandas 3.x、scikit-learn 1.9、statsmodels 0.14、matplotlib 3.11、seaborn 0.13+。


4. 依赖清单 requirements.txt

4.1 生成与使用

bash
# 生成当前环境的依赖清单
pip freeze > requirements.txt

# 在新环境一键安装所有依赖
pip install -r requirements.txt

4.2 requirements.txt 示例

text
numpy==2.4.0
pandas==3.0.5
matplotlib==3.11.0
seaborn==0.13.2
scipy==1.15.0
scikit-learn==1.9.0
statsmodels==0.14.6
💡提示

为什么科研必须保存 requirements.txt? 换电脑、换服务器、给师弟师妹复现实验时,pip install -r requirements.txt 一条命令就能还原环境——这是可复现科研的基础。


5. Git 版本管理基础

5.1 Git 是什么

Git 是分布式版本控制系统,记录代码的每一次修改,可以随时回退到任意历史版本,也是 GitHub 协作的基础。

5.2 核心概念

🍚生活化比喻

先听懂:Git 的流程就像寄快递

  • 工作区 = 你手里改好的文件(还没寄出)。

  • git add = 把文件装进快递箱(暂存区),准备寄出。

  • git commit = 寄出并拍照存档(本地仓库),从此这个版本永远可查、可回退。

  • git push = 把快递寄到云端仓库(GitHub),换电脑也能取回。

text
工作区(你看到的文件) → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库(GitHub)

5.3 常用命令

bash
# 初始化仓库(在项目根目录执行一次)
git init

# 查看状态
git status

# 添加文件到暂存区
git add .                # 添加所有文件
git add data/            # 添加指定目录
git add main.py          # 添加指定文件

# 提交(生成一个版本快照)
git commit -m "完成数据清洗模块"

# 查看提交历史
git log --oneline

# 克隆远程仓库
git clone https://github.com/用户名/仓库名.git

# 推送到远程
git push origin main

# 拉取远程更新
git pull origin main

5.4 回退与分支(了解)

bash
# 回退到上一个版本
git reset --hard HEAD~1

# 查看分支
git branch

# 创建并切换分支
git checkout -b feature-xxx
注意

科研 Git 习惯

  • 每次改动完成一个逻辑单元(如"修复缺失值处理")就 commit 一次,注释写清楚做了什么。

  • 不要提交大数据文件(表达矩阵、原始数据)到 Git,用 .gitignore 排除。

  • 重要实验代码及时 push 到 GitHub 私有仓库备份。

5.5 .gitignore 示例

gitignore
# 数据文件(太大,不入库)
data/
*.csv
*.xlsx

# 缓存与临时文件
__pycache__/
.ipynb_checkpoints/
.DS_Store

# 环境相关
.env

6. 项目文件组织

一个规范的科研项目目录结构:

text
my_project/
├── README.md          # 项目说明(做什么、怎么运行)
├── requirements.txt   # 依赖清单
├── data/              # 原始数据(只读)
│   ├── raw/           # 原始数据
│   └── processed/     # 清洗后的数据
├── code/              # 代码脚本
│   ├── 01_clean.py
│   ├── 02_analysis.py
│   └── utils.py
├── output/            # 输出结果(图、表、报告)
│   ├── figures/
│   └── tables/
└── notebooks/         # Jupyter 笔记本(探索性分析)
💡提示

命名规范:脚本用 01_02_ 编号表示执行顺序;变量、函数用小写加下划线(snake_case);文件命名见名知意。


7. 练习与交付物

交付物(必做)

笔记

完成以下全部步骤:

  1. 创建 conda 虚拟环境 tcm_nano(Python 3.13)。
  2. 激活环境,安装:numpy pandas matplotlib seaborn scipy scikit-learn statsmodels
  3. 生成 requirements.txt
  4. 初始化 Git 仓库,创建 .gitignore(排除 data/__pycache__/)。
  5. 添加所有文件并完成第一次 commit,注释写清楚。

进阶练习

  1. pip show pandas 查看已安装的 pandas 版本。
  2. 在 GitHub 创建私有仓库,把项目 push 上去。
  3. 新建一个分支 dev,在分支上修改一个文件并 commit,再合并回 main

8. 速查表

需求 命令
创建环境 conda create -n tcm_nano python=3.13
激活环境 conda activate tcm_nano
退出环境 conda deactivate
安装包 pip install numpy pandas
指定版本 pip install pandas==2.2.3
生成依赖清单 pip freeze > requirements.txt
安装依赖清单 pip install -r requirements.txt
初始化仓库 git init
查看状态 git status
添加文件 git add .
提交 git commit -m "说明"
查看历史 git log --oneline
推送 git push origin main
拉取 git pull origin main

上一章:03 · Pandas 数据处理与清洗 | 下一章:05 · 课题常用工具包与语法概览

配套学习资源

共 4 条 · 点击跳转