04 · 包管理与项目版本管理
学会创建干净的虚拟环境、管理依赖、用 Git 记录代码演进——这是研究生阶段不被环境问题拖垮的关键。
0. 小白导读:这一章在解决什么麻烦?
1. 为什么需要虚拟环境
问题:不同项目需要的包版本可能冲突。比如项目 A 需要 pandas 2.x,项目 B 需要 pandas 3.x——如果都装在全局环境里,会互相覆盖,导致项目崩溃。
解决方案:为每个项目创建独立的虚拟环境,各环境互不干扰。
一句话:虚拟环境 = 每个项目一个"独立的 Python 房间",里面装什么包互不影响。
2. conda 环境管理
2.1 创建与激活环境
# 创建环境(指定 Python 版本) conda create -n tcm_nano python=3.13 # 激活环境(Windows) conda activate tcm_nano # 退出环境 conda deactivate # 查看所有环境 conda env list
2.2 环境复制与删除
# 复制环境 conda create -n tcm_nano_backup --clone tcm_nano # 删除环境 conda remove -n tcm_nano --all
️ 每次新开终端都要先 conda activate tcm_nano,否则用的是 base 环境。
3. pip 包管理
# 安装包 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 生成与使用
# 生成当前环境的依赖清单 pip freeze > requirements.txt # 在新环境一键安装所有依赖 pip install -r requirements.txt
4.2 requirements.txt 示例
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 add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库(GitHub)
5.3 常用命令
# 初始化仓库(在项目根目录执行一次) 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 回退与分支(了解)
# 回退到上一个版本 git reset --hard HEAD~1 # 查看分支 git branch # 创建并切换分支 git checkout -b feature-xxx
️ 科研 Git 习惯:
-
每次改动完成一个逻辑单元(如"修复缺失值处理")就 commit 一次,注释写清楚做了什么。
-
不要提交大数据文件(表达矩阵、原始数据)到 Git,用
.gitignore排除。 -
重要实验代码及时 push 到 GitHub 私有仓库备份。
5.5 .gitignore 示例
# 数据文件(太大,不入库) data/ *.csv *.xlsx # 缓存与临时文件 __pycache__/ .ipynb_checkpoints/ .DS_Store # 环境相关 .env
6. 项目文件组织
一个规范的科研项目目录结构:
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. 练习与交付物
交付物(必做)
完成以下全部步骤:
- 创建 conda 虚拟环境
tcm_nano(Python 3.13)。 - 激活环境,安装:
numpy pandas matplotlib seaborn scipy scikit-learn statsmodels。 - 生成
requirements.txt。 - 初始化 Git 仓库,创建
.gitignore(排除data/和__pycache__/)。 - 添加所有文件并完成第一次 commit,注释写清楚。
进阶练习
- 用
pip show pandas查看已安装的 pandas 版本。 - 在 GitHub 创建私有仓库,把项目 push 上去。
- 新建一个分支
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 · 课题常用工具包与语法概览