第2章 Python环境与工具链:Anaconda安装与配置、Jupyter Notebook与VS Code的选择、虚拟环境管理
做数据采集和建模,第一件事不是写代码,而是搭环境。
我见过太多人,代码写得挺溜,结果环境一塌糊涂——包冲突、版本不对、换了台机器就跑不起来。说白了,环境管理是数据工程的「地基」。地基不稳,楼盖得再高也得塌。
2.1 Anaconda:一站式数据科学发行版
Anaconda 是什么?它不是一个 Python 解释器,而是一个「全家桶」。里面预装了 1500+ 数据科学常用包,包括 numpy、pandas、scikit-learn、jupyter 等等。你装一个 Anaconda,相当于省去了手动装几十个包的功夫。
核心优势:Anaconda 自带的 conda 包管理器,能解决 C 库依赖问题。pip 装不了的包,conda 往往能搞定。我在项目中遇到过用 pip 装 geopandas 死活装不上,换成 conda 一行命令就解决了。
安装步骤
- 去 Anaconda 官网 下载对应操作系统的安装包(Python 3.9+ 版本)
- 双击安装,注意勾选「Add Anaconda to my PATH environment variable」(虽然安装向导不推荐,但我建议勾上,省得后面麻烦)
- 安装完成后,打开终端(Windows 用 Anaconda Prompt),输入
conda --version验证
注意:macOS 和 Linux 用户安装后,记得运行 conda init,否则终端可能识别不了 conda 命令。我曾经在这上面卡了半小时,后来发现是忘了 init。
配置国内镜像源
Anaconda 默认源在国外,下载速度慢得让人抓狂。我建议换成清华或中科大的镜像源:
# 添加清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
# 验证配置
conda config --show channels
2.2 Jupyter Notebook vs VS Code:选哪个?
这个问题,几乎每个学员都会问。我的回答是:两个都要用,但场景不同。
| 特性 | Jupyter Notebook | VS Code |
|---|---|---|
| 适合场景 | 探索性分析、数据可视化、教学演示 | 工程化开发、大型项目、调试 |
| 代码组织 | 按 Cell 分块,可混合 Markdown | 按文件组织,支持多文件项目 |
| 调试能力 | 弱,基本靠 print | 强,断点调试、变量监视 |
| 版本控制 | 差,.ipynb 文件 diff 不友好 | 好,.py 文件天然适合 Git |
| 扩展性 | 有限,主要靠插件 | 极强,海量扩展 |
我个人习惯是:前期探索用 Jupyter,后期工程化用 VS Code。比如做数据清洗和特征工程,我会先在 Jupyter 里快速试错,看分布、画图表。等逻辑确定了,再搬到 VS Code 里写成 .py 脚本,加上单元测试和异常处理。
小技巧:VS Code 也支持 Jupyter Notebook。你可以在 VS Code 里直接打开 .ipynb 文件,既享受 Notebook 的交互性,又能用 VS Code 的 Git 和调试功能。两全其美。
2.3 虚拟环境管理:conda vs venv
为什么要用虚拟环境?你想想看,项目 A 需要 pandas 1.0,项目 B 需要 pandas 2.0。如果装在同一套环境里,必然冲突。虚拟环境就是给每个项目一个「独立的小房间」,互不干扰。
conda 虚拟环境
conda 是 Anaconda 自带的,功能强大,不仅能管理 Python 包,还能管理非 Python 依赖(比如 C 库、R 语言)。
# 创建环境
conda create -n myenv python=3.9
# 激活环境
conda activate myenv
# 安装包
conda install numpy pandas
# 导出环境配置
conda env export > environment.yml
# 从配置文件创建环境
conda env create -f environment.yml
# 删除环境
conda remove -n myenv --all
venv 虚拟环境
venv 是 Python 3.3+ 自带的,轻量级,适合不需要 conda 的场景。
# 创建环境
python -m venv myenv
# 激活环境(Windows)
myenv\Scripts\activate
# 激活环境(macOS/Linux)
source myenv/bin/activate
# 安装包
pip install numpy pandas
# 导出依赖
pip freeze > requirements.txt
# 从 requirements.txt 安装
pip install -r requirements.txt
| 对比维度 | conda | venv |
|---|---|---|
| 包管理范围 | Python + 非 Python 依赖 | 仅 Python 包 |
| 依赖解析 | 强,自动解决冲突 | 弱,依赖 pip 的解析能力 |
| 环境隔离 | 完全隔离 | 完全隔离 |
| 适用场景 | 数据科学、机器学习项目 | 纯 Python 项目、Web 开发 |
| 学习成本 | 稍高 | 低 |
避坑指南:我曾经在项目里混用 conda 和 pip 安装包,结果环境乱成一锅粥。记住一条铁律:一个环境里,尽量只用一种包管理器。如果非要用 pip,先确保 conda 里没有这个包。
2.4 本章知识体系
下面这张图,帮你把本章的核心逻辑串起来:
2.5 实战建议:搭建你的第一个项目环境
光说不练假把式。我建议你按下面的步骤,亲手搭一个环境:
- 安装 Anaconda,配置清华镜像源
- 创建虚拟环境:
conda create -n data_project python=3.9 - 激活环境,安装核心包:
conda install numpy pandas matplotlib jupyter - 启动 Jupyter Notebook:
jupyter notebook,写几行代码测试 - 导出环境配置:
conda env export > environment.yml
我的习惯:每个项目都保留一份 environment.yml 或 requirements.txt,放在项目根目录。这样换机器或者给同事用,一行命令就能复现环境。省心。
嗯,环境搭好了,后面写代码才能顺畅。记住:环境管理不是浪费时间,是在为未来的自己省时间。