很多刚开始接触 Python 的朋友,包括我自己当年入坑的时候,最头疼的往往不是语法本身,而是搭环境。官网下载 Python、配环境变量、装 pip 包、再找一个趁手的编辑器……每一步单独看都不难,但串在一起,代码还没写一行,热情先消了一半。今天我把这套我用了很多年、也推荐过无数次给身边同事的组合——Anaconda + VSCode + Jupyter Notebook,从下载到日常使用,一路的坑和技巧全部摊开来讲。这套组合基本覆盖了从写脚本、做数据分析到跑深度学习实验的绝大多数场景。
1. 为什么是这三件套?先搞清楚各自的分工
在动手安装之前,先花三分钟理清这三个工具在整条工作流里的角色。很多人装完之后用得别扭,往往就是因为没搞明白它们之间的协作关系。
1.1 Python 环境、写代码的地方、交互式笔记,各司其职
Anaconda 是一个 Python 发行版,它的核心价值不在于“能跑 Python”,而在于它内置了 conda 这个包管理和环境管理工具。你可以把 Anaconda 理解成一个精心配好的厨房,锅碗瓢盆(NumPy、Pandas 这些常用库)都给你备齐了,还附带了一个叫做 conda 的智能储物柜,想要什么调料,一句话就给你取出来,而且不同的菜(项目)可以拥有各自独立的调料架,互不干扰。这正是虚拟环境的意义:A 项目需要 TensorFlow 2.x,B 项目要求 TensorFlow 1.x,用 conda 建两个独立环境,各自安好,不用为了兼容性焦头烂额。
VSCode 则是那个“切菜台”。它是微软推出的一款免费开源编辑器,轻量但扩展性极强。装上 Python 插件后,它就变成了一个功能完整的 Python IDE,有代码高亮、智能补全(IntelliSense)、断点调试、Git 集成、远程开发等等。你日常写.py脚本,绝大多数工作都是在 VSCode 里完成的。
Jupyter Notebook 则是一个“试菜台”。它以网页形式呈现,将代码、运行结果、富文本说明、可视化图表全部整合在一个文档里。这种“交互式笔记”的工作方式非常符合数据分析、算法探索的场景——你写一小段代码,立刻看到输出,然后基于输出调整下一步,整个思考过程被完整记录下来。Notebook 文件(.ipynb)本身是 JSON 格式,用文本编辑器打开也能看到里面的代码和输出。
这三者的配合逻辑是:用 Anaconda 管理 Python 解释器和各种第三方库;用 VSCode 作为统一入口,打开写好的.py脚本,也可以直接编辑和运行.ipynb笔记;用 Jupyter Notebook(无论是 VSCode 内嵌的还是浏览器里打开的)进行交互式数据分析。其实 Jupyter 也可以独立运行,但在 VSCode 里运作的优势在于,你不需要来回切换窗口,代码补全、变量查看、Git 版本管理都能在同一个界面里完成。
1.2 这套组合适合哪些人,解决了什么问题
如果你是这几类人,这套组合可以直接“抄作业”:
- 数据方向的初学者:刚学 Pandas、Matplotlib、Scikit-learn,需要在 Notebook 里边写边看图表,Anaconda 预装的数据分析库能让你跳过漫长的依赖安装过程。
- 经常做算法实验的工程师:需要在不同版本的 PyTorch/TensorFlow 之间切换,conda 的虚拟环境是成本最低的隔离方案。
- 教师、博主或喜欢记录的技术作者:Notebook 是一个很好的载体,代码和讲解放在一起,导出成 HTML 或 Markdown 也很方便。
- 已经在用 Pycharm 但觉得笨重的老手:VSCode 启动更快、占用资源更少,在配置好后,写脚本的体验完全不输给 PyCharm。
这套组合解决的核心痛点有三个:一是环境管理混乱,二是写代码和看数据结果之间的割裂感,三是初学者装包时的挫败感。接下来我从零开始,把每一步的安装和配置都过一遍。
2. Anaconda 下载安装与国内镜像配置,别在第一步就卡住
Anaconda 的安装是整套流程的基础,但恰恰是这一步,很多人栽了跟头。最典型的两个问题:官方下载速度慢得像蜗牛;装完以后 conda 命令在终端里根本找不到。
2.1 官方源与清华镜像源的选择
Anaconda 官方网站的服务器在国外,国内用户直接下载安装包,速度经常只有几 KB/s,甚至中途断掉。这里我不推荐硬等,直接用清华大学开源软件镜像站是绝大多数国内开发者的标准做法。你可以在清华镜像站找到 Anaconda 的安装包列表,选择对应你系统的最新版本(比如 Anaconda3-2024.xx-xxx-x86_64.exe 这种命名格式)。注意区分 64 位和 32 位,现在基本都是 64 位系统,选x86_64结尾的即可。
安装包大概 500MB 到 1GB 左右,用浏览器直接下载可能还是会觉得慢,这里教大家一个小技巧:把安装包的下载链接复制到迅雷或者 IDM 这类多线程下载工具里,速度会快很多。另外,安装时建议选择“Just Me”而不是“All Users”,避免后续权限问题。安装路径尽量不要包含中文和空格,比如D:\Anaconda3就比D:\软件\Anaconda 3稳妥得多。
2.2 安装过程中必须注意的两个关键点
安装到一半,界面会有一个勾选项,问是否要添加 Anaconda 到 PATH 环境变量。这里是一个经典分歧点。不同教程给出的建议不一样,我个人的建议是:如果这是你唯一的一个 Python 发行版,电脑上也没有预装过其他 Python(或者你很清楚自己在做什么),可以勾选“Add Anaconda3 to my PATH environment variable”,它会帮你搞定环境变量,之后在任何终端窗口里都能直接输入conda命令。
但如果你电脑上装了多个 Python,或者你使用的 IDE(比如 PyCharm)自己有解释器管理逻辑,我建议不要勾选,手动配置。因为勾选后,base环境会被默认加入 PATH,在某些情况下会抢劫系统中其他工具的 Python 依赖,造成莫名其妙的冲突(比如conda命令能用,但pip指向了另一个 Python)。我自己的习惯是,装完后手动把D:\Anaconda3、D:\Anaconda3\Scripts、D:\Anaconda3\Library\bin这三个路径单独添加到系统环境变量 PATH 中,这样既不影响其他软件,也能让 conda 生效。
安装完成后,打开命令行(Win+R 输入 cmd 回车),输入:
conda --version如果能输出类似conda 24.x.x的版本号,说明安装成功。如果提示“conda 不是内部或外部命令”,说明环境变量没配好,按上面的路径去系统环境变量里补上,然后重新打开一个终端窗口。
2.3 配置国内镜像源,让装包速度起飞
Anaconda 的默认官方源同样是国外服务器,用 conda 装包时经常出现解析依赖卡半天或者速度只有几十 KB 的情况。这里必须在安装后立刻做一件事:把 conda 的下载源切换成清华源。在命令行里依次执行:
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 --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r conda config --set show_channel_urls yes执行完后,可以查看一下配置文件确认是否生效(Windows 在用户目录下的.condarc文件)。这里要特别注意一点:2024 年中之后,清华源对 Anaconda 仓库(尤其是conda-forge)的同步策略有过调整,如果你发现某些包报 404,可以在.condarc文件里再增加https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge这个频道。注意,如果配置了自定义频道,默认的defaults往往会被覆盖,所以在.condarc里最好把defaults也列上,确保有的包在本地镜像找不到时还能去官方源拉。
虽然 conda 也可以用作 pip 的镜像源,但更稳妥的做法是,pip 也单独设置清华源。在用户目录下创建pip.ini(Windows)或pip.conf(Linux/macOS),写入:
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host = pypi.tuna.tsinghua.edu.cn这样后续pip install装包时,速度直接拉满。
3. VSCode 安装与 Python 开发环境打磨,把编辑器练成主力 IDE
VSCode 本身是个空壳子,装上合适的插件就蜕变为 IDE。这个环节我重点讲三个东西:安装与汉化、Python 解释器关联、以及哪些插件值得在 2024 年配置。
3.1 下载、安装和基础设置
VSCode 官网下载地址是code.visualstudio.com,同样是国外服务器,但 VSCode 的安装包比 Anaconda 小很多(大概 100MB 左右),直接用浏览器下载问题不大。如果实在慢,也可以把下载链接扔到下载工具里加速。安装时基本一路 Next 就行,但有几个勾选建议注意一下:勾选“添加到 PATH”,这样你可以在任意终端里输入code .快速打开当前目录;勾选“添加‘使用 VSCode 打开’操作到文件和目录上下文菜单”,这样在文件夹上右键就能直接打开,很省事。
装好后的第一件事,我一般是按Ctrl+Shift+X打开扩展商店,搜索“Chinese (Simplified)”,安装微软官方的简体中文语言包。安装完右下角会提示重启,点击就变成中文界面了。如果不想安装中文包,也可以在右下角语言选项里切换,但我还是建议习惯英文界面的同学直接上了,毕竟看惯了英文界面,查英文报错、看英文文档会稍微顺一点点。
3.2 配置 Python 解释器,这是 VSCode 识别 Anaconda 的关键
VSCode 装好 Python 扩展(搜索"Python",认准发布者为 Microsoft 的那个)后,还差最关键的一步:让它知道该用哪个 Python 解释器。如果你是先装 Anaconda 再装 VSCode,VSCode 有很大概率会自动检测到 Anaconda 的 base 环境,但为了确保万无一失,建议手动指定一次。
按下Ctrl+Shift+P,输入Python: Select Interpreter,回车。这时候会列出 VSCode 扫描到的所有 Python 解释器,包括系统自带的 Python、Anaconda 的各个虚拟环境。选择对应 Anaconda 的python.exe(通常名称类似Anaconda3\python.exe)。如果列表里没有,点击“输入解释器路径”,手动浏览到 Anaconda 安装目录下的python.exe即可。
这里有个细节:当你选中 Anaconda 的解释器后,VSCode 会自动激活对应的 conda 环境。在终端里创建一个新的终端窗口(Ctrl+Shift+``),你会看到命令行前缀变成了(base)` 或你当前选中环境的名称,这说明 conda 环境已经和 VSCode 的终端整合了。如果你之前没用过 conda 环境,这个提示可能会困惑你一会儿,但这其实是正常现象,表示你当前终端位于 base 环境里。
3.3 2024 年 VSCode 的实用插件组合
除了 Python 官方插件,下面这几个插件是我日常开发中觉得非常值得装的:
- Pylance:Python 官方插件的搭档,提供更智能的类型检查和自动补全。它是 Python 插件自带的,不用单独安装,但最好确认一下没有把它禁用掉。
- Jupyter:允许你在 VSCode 里直接创建、编辑、运行
.ipynb文件,这篇文章后面会详细讲这套工作流。同样由微软官方提供。 - GitLens:在代码行内显示最近一次提交的作者和时间,团队协作时排查代码归属特别方便。个人项目也建议装,能帮你理清自己的改动脉络。
- Python Debugger:以前叫 Python Debug,现在拆成独立扩展了,提供调试功能,包括断点、变量监视、调用堆栈。用图形化界面调试比用
print大法高效得多。 - Remote - SSH(按需):如果你需要连到远程服务器开发,这个插件几乎必备。它可以让你在本地 VSCode 窗口里操作远程机器的文件、跑终端命令,体验和本地开发一样。
这些插件我建议按需安装,不要一口气装几十个。插件装多了,不仅启动慢,还会增加潜在的冲突风险。基础体验先搞定:Python + Pylance + Jupyter + GitLens,就可以愉快地写代码了。
4. conda 虚拟环境实操:从创建到删除,彻底搞懂环境隔离
环境管理是 Anaconda 的灵魂。很多初学者搞不清 base 环境、虚拟环境、Co py 之间的关系,导致后面项目多了,环境乱成一锅粥。这一节我把常用的 conda 命令和实际使用场景整理出来。
4.1 创建并激活你的第一个虚拟环境
假设你现在要开始一个新项目,需要 Python 3.11 和 PyTorch,此时不应该直接在 base 环境里装。因为 base 是 Anaconda 的根环境,动它容易牵连其他包。正确的做法是:
conda create -n pytorch_env python=3.11其中-n指定环境名称,这里是pytorch_env,后面跟要安装的 Python 版本。执行后 conda 会检查依赖并询问是否下载安装,输入y即可。等待安装完成后,激活这个环境:
conda activate pytorch_env激活后,命令行前缀会从(base)变成(pytorch_env),此时python --version会显示 3.11。在这个环境里用pip或conda安装的一切包,都只存在于pytorch_env环境内部,不会干扰到 base 或其它环境。这个隔离能力太有用了,相当于每家店铺都配了独立的储物柜,补给互不串味。
要退出当前环境,用:
conda deactivate4.2 环境克隆、导出与删除,应对换电脑和备份场景
如果遇到“这个环境配置得好好的,我换了台电脑,怎么原样搬家”的场景,conda 提供了导出功能。
在激活的环境里执行:
conda env export > environment.yml生成的environment.yml文件里记录了所有包名及其版本,甚至还有下载源。在新电脑上,用:
conda env create -f environment.yml就能重建一个一模一样的环境。但注意,conda env export有时会把当前系统的路径、构建信息等给打包进去,在跨平台(Windows 到 Linux)迁移时可能会报错。更稳妥的方案是只导出显式安装的包,用:
conda env export --from-history > environment.yml这样只包含你明确安装的包,忽略依赖层级,跨平台兼容性会好很多。
当环境彻底不用了,删除命令是:
conda env remove -n pytorch_env删除前务必确认环境名,误删了重建可要费不少功夫。顺便说一句,conda list可以查看当前环境里都有哪些包和版本,排查冲突时很有用。
4.3 conda 与 pip 混用时的注意事项
一个很常见的坑:在 conda 环境里,同时又用了 pip 装了一些包,结果再执行conda install时,把环境搞崩了,或者包版本对不上。严格讲,conda 和 pip 各自管理自己的包元数据,混用时确实能共存,但优先级不一样。绝大多数情况下,我建议在 conda 环境内部优先用conda install,如果 conda 源里没有某个包(比如一些只在 PyPI 上分发的最新包),再用pip install代替。
但有几个雷区:不要在 conda 里用pip install装那些已经有 conda 版本的包,因为两者的依赖解析方式不同,可能导致环境里的某些二进制库版本被覆盖;不要在不同环境之间共用 site-packages 缓存,除非你很清楚后果。只要记住“conda 优先,pip 兜底”这个原则,环境基本不会出大乱子。
5. Jupyter Notebook 的使用进阶,从基础快捷键到让体验变好的技巧
Jupyter Notebook 是这三件套里对新手最友好的东西。它让写代码变得像写字一样线性:一个单元格写一段代码,运行一下,看结果,然后继续下一个单元格。这种交互式体验极大降低了试错成本。但实际用起来,很多人会觉得它不如写脚本顺手——原因往往是快捷键不熟,或者缺了关键插件。这一节我把入门到进阶的用法梳理一遍。
5.1 在 VSCode 中使用 Jupyter Notebook
以前打开 Anaconda Navigator 再启动 Jupyter,然后浏览器开页面,体验确实有点重。现在我已经习惯直接在 VSCode 里新建一个.ipynb文件了。操作很简单:在 VSCode 中Ctrl+N新建文件,点击右下角语言模式,选择 “Jupyter Notebook”,然后保存成.ipynb后缀即可。编辑器会切换成 Notebook 界面:上方是工具栏,下面是一些单元格,可以选择 Cell 类型为 Code 或 Markdown。
在这里写 Python 代码和浏览器里的 Jupyter 体验高度一致,但额外享受到了 VSCode 的代码补全和语法高亮。注意,Notebook 也需要选择一个 Python 解释器,右上角有内核选择按钮,把它指到你的 Anaconda 虚拟环境即可。如果没有指定,它默认会选当前 VSCode 选中的解释器,这也就是为什么我建议在 VSCode 里先配置好全局的解释器。
如果需要在浏览器里使用 Jupyter(有些情况下浏览器界面确实更方便,比如你要嵌入网页链接,或依赖浏览器端插件),可以在终端中激活环境后,输入:
jupyter notebookVSCode 端和浏览器端各有优劣,日常我基本固定在 VSCode 里操作,毕竟所有工作都在一个窗口里。但 Jupyter 网页版有一个很实用的功能——分享链接让别人直接预览你的 Notebook,这一点 VSCode 端目前还做不到。
5.2 必会的快捷键与 Markdown 用法
Notebook 用起来顺手的核心在于快捷键。我在入职后带过好几位新人,无一例外,第一次看到我手指在键盘上上下翻飞都很惊讶。这里把最核心的几个排序:
Shift + Enter:运行当前单元格并跳到下一个Ctrl + Enter:运行当前单元格,但不往下跳A/B:在当前单元格上方/下方新建一个单元格M:把单元格切换为 Markdown 模式(用于写注释说明)Y:把单元格切回 Code 模式DD(连续按两次 D):删除当前单元格Tab:代码补全或缩进?:在对象后加问号并运行,显示该函数的文档字符串,这在查函数说明时特别好用
除了快捷键,在 Notebook 里写说明文档也几乎是必备技能。Markdown 单元格里可以通过#符号写标题,用**加粗,用三个反引号围起代码块。我经常用到的还有目录功能:在 VSCode 的 Notebook 界面右侧有一个大纲(Outline)视图中,会解析 Markdown 标题自动生成目录,方便在大篇幅文档中快速跳转。如果你想在网页版 Jupyter 里生成目录,可以安装jupyter_contrib_nbextensions扩展,然后启用 Table of Contents 模块。
博客文章、教程类 Notebook 里,Markdown 写得好不好直接决定阅读体验,建议花半小时把所有 Markdown 符号过一遍。
5.3 让代码自动补齐更好用:配置和扩展
Jupyter 自带的补全在很多老版本里比较弱,但在新版(Jupyter Notebook 7.x 以及 VSCode 的 Jupyter 扩展)里,补全体验已经改善了很多。主要是基于内核的 Completer 以及 VSCode 端的 Pylance 加持,绝大多数情况下代码能自动弹出选项。
如果你觉得网页版 Jupyter 补全不够聪明,老牌方案是安装jupyterlab-lsp和python-lsp-server。安装命令:
pip install jupyterlab-lsp python-lsp-server然后重启 Jupyter,在设置里启用 LSP 功能。但在 VSCode 里其实不需要这些,因为 VSCode 的 IntelliSense 本来就匹配的是编辑器的能力,不是用自己的,所以体验比网页版好很多。如果你在 VSCode 里发现 Notebook 的代码补全不明显,建议检查一下状态栏左下角的 Python 解释器是否选对了,如果误选了系统自带的 Python,补全和类型检查都会弱很多。
5.4 单元格执行没反应?大概率是内核的问题
“单元格执行代码没有任何反应”是热词搜索里频率相当高的问题,我在实际中遇到也遇到过好几次。大部分情况下,不是代码本身写得有问题,而是 Jupyter 内核(Kernel)挂了。解决办法很简单:在 VSCode 的 Notebook 界面右上角点击内核选择器,选择“Python Environments”中的目标环境;如果还是不行,先点击“重新启动内核”(Restart),或者直接切换到另一个 Python 解释器后再切回来,强制刷新内核连接。
在浏览器版 Jupyter 中,类似的菜单是 Kernel -> Restart。如果网页版一直执行但不出结果,还有一个常见原因是浏览器缓存或者旧内核未释放:关掉页面,在终端里Ctrl+C终止运行中的 Jupyter,再重新jupyter notebook启动。别小看这种重启大法,它在 80% 的怪问题时都是最省事的解药。
6. 常见问题与排查技巧,把踩过的坑一次说完
这套组合虽然好用,但安装和日常使用中总免不了各种意外。我把这几年遇到的高频问题、以及向同事答疑时看到的一些典型错误整理成一份速查表。遇到问题时,先别急着搜乱七八糟的教程,按这个表走一遍,大概率能定位。
| 问题现象 | 可能原因 | 排查与解决思路 |
|---|---|---|
| 命令行找不到 conda | 未配置环境变量 | 检查 PATH 里是否包含 Anaconda3 和 Scripts 目录;修改后需重开终端 |
| conda 安装包速度极慢 | 默认官方源 | 配置清华源,注意配置conda-forge频道以防部分包 404 |
| pip 安装慢或超时 | 默认 PyPI 源 | 配置 pip 使用清华 PyPI 镜像,方法见 2.3 节 |
| 运行 Jupyter 报 ImportError: DLL load failed | 升级包后二进制不匹配(常见于 numpy/scipy 等) | 在该环境里执行conda install numpy scipy --force-reinstall,尽量用 conda 重装这些二进制包,不要混用 pip |
| Jupyter 网页版打不开 404 | 端口被占用或浏览器缓存异常 | 终端 Ctrl+C 强制停止,重开;或指定端口jupyter notebook --port=9999 |
| 单元格执行后没有输出,也不报错 | 内核连接中断或内核未同步 | VSCode 中重启内核,或切换解释器强制重连;网页版 Kernel -> Restart |
| conda create 时长时间卡在 “Solving environment” | 依赖解析慢 | 换用清华源后一般会改善;也可以加--channel conda-forge指定频道 |
| VSCode 终端报 “Warning: This Python interpreter is in a conda environment...” | 这是提示,不是错误 | 确认环境名后正常使用;如果提示来自错误的 conda 环境,重新选择解释器 |
| 激活环境时出现 “This is a warning... please activate conda” | conda init 未初始化 | 在终端执行conda init,重开终端即可 |
6.1 ImportError: DLL load failed 的深度排查
这个报错我在 Windows 上见到过太多次了,出现的场景往往是import pandas或import numpy时直接崩掉。它的本质是:你当前环境中某个包编译时链接到的二进制库(比如 MKL、OpenBLAS)和你在用的 Python 运行时对不上号。最常见的罪魁祸首是——先用 conda 装了 numpy,然后又用 pip 装了另一个版本的 pandas,导致二进制接口漂移。
遇到这个报错,我建议不要自己手动去删 DLL 文件或者在网上找一个.dll手动拷贝,那都是拆东墙补西墙。最可靠的是回到 conda 的一致性管理:在目标环境里执行:
conda install numpy pandas scipy --force-reinstall如果这个环境里还混装了 PyTorch 或 TensorFlow,建议把深度学习框架也一并用 conda 重装,比如conda install pytorch torchvision torchaudio cpuonly -c pytorch。只有当某个包确实没有 conda 版本时,才考虑在conda先把核心依赖装好之后,再用 pip 装它,而且装完立刻复测导入,避免问题扩散。
6.2 VSCode 里调试 Python 时的几个隐性坑
很多人用 VSCode 跑脚本没问题,但一按 F5 想调试,却提示“launch.json 配置有误”或“无法启动调试程序”。原因大多是当前没有创建launch.json。最好的办法不是手动新建这个 JSON,而是按Ctrl+Shift+D打开运行和调试面板,点击“创建 launch.json 文件”,选择“Python”,VSCode 会自动生成一个模板。模板内容大概长这样:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] }这里program默认是${file},意思就是调试当前正在编辑的文件。如果你需要接收命令行参数,可以加一行"args": []。另一个新手常见的问题是按 F5 后,提示“无法在初始化之前访问 'sys'”,这通常不是代码问题,而是launch.json里指定了错误的解释器。在调试面板右侧的齿轮里确认一下"python"字段是否指向了conda环境中的解释器路径。
还有一个常被忽略的坑:如果你在调试模式下运行一个本来就运行很久的循环,VSCode 默认有超时限制。如果遇到调试器卡死,检查右下角是否有“取消 pydevd 超时”之类的提示,在配置里把"justMyCode": false改为true(意思是只调试你自己的代码,不进入第三方库内部),绝大部分卡顿都会消失。
6.3 在 VSCode 中使用 WSL 的那点事
这是个高频需求:本地是 Windows,但项目需要跑在 Linux 环境里,尤其是一些深度学习框架在 Windows 上支持不完善。以前你可能需要开虚拟机或者双系统,现在 WSL 2(Windows Subsystem for Linux)成熟了,在 VSCode 里用 WSL 也异常方便。你只需要在 Windows 商店里安装一个 Ubuntu 发行版,然后在 Ubuntu 里安装 Anaconda,接着回到 VSCode,安装 Remote - WSL 扩展。重启 VSCode 后,左下角会出现一个绿色的“><”图标,点击它选择“连接到 WSL”,VSCode 会重新加载并连接到 Linux 子系统的文件系统,终端也自动变成 bash。此时你再选择 Python 解释器,就能找到 Ubuntu 里 Anaconda 的环境了。
这个方案最舒服的地方在于,文件保存在 Windows 的硬盘上(比如D:\projects),但代码运行在 Linux 环境里,两边互不干扰。如果你是做深度学习又有 N 卡,WSL 2 里配置 CUDA 的流程也比原生 Windows 下顺畅不少。不过要注意,跨文件系统读写(比如从 Windows 路径访问 WSL 里的文件)性能很差,建议建立好规范:Python 源码放在 WSL 家目录里,通过\\wsl$访问。
6.4 别忽略 conda 自身的更新和维护
最后聊一个容易被忽略的点:很多人装好 Anaconda 之后,就再也没管过它。过个一年半载,发现 conda 装任何包都报错,一看是 conda 版本太旧。定期更新 conda 本身也是个好习惯,在 base 环境里执行:
conda update conda conda update anaconda但不建议频繁升级基础包(比如把 Python 从 3.11 升到 3.12),因为升级会连带一堆包重新编译,容易出问题。还有一个习惯值得培养:每当你安装一个新的、比较重的库之前,先执行conda env export > environment_before_install.yml,万一环境弄坏了,可以快速回滚到之前的依赖状态。这个习惯花不了半分钟,却能在关键时刻省下几小时的排查时间。
7. 日常使用心法:把写代码这件事变得更顺手
工具装好了、坑也踩得差不多了,最后分享几个我用这套组合写代码时形成的工作习惯。这些不是为了炫技,是真真确确提高了效率的东西。
在 VSCode 里,我一般按下Ctrl+Shift+P然后输入Python: Create Python File,创建脚本文件。还会把工作区保存为一个 Code Workspace(.code-workspace),把特定项目关联到特定 conda 环境,这样每次打开工作区,解释器就自动选好了,不用每次重新设置。结合 Git 使用的话,推荐在.gitignore里把*.ipynb的检查点文件(.ipynb_checkpoints/)加进去,避免污染仓库。
Jupyter Notebook 方面,我建议养成一个习惯:项目中的关键研究结果用 Notebook 记录,但项目最终交付的正式代码,还是写成.py模块。原因在于.ipynb是 JSON 格式,代码复用的便利性远不如.py文件,而且 git diff 时非常难看。我通常是先在 Notebook 里做探索性分析和画图,等验证完逻辑,就把核心函数整理成.py脚本放进项目的src/目录里,再用测试用例去保护这个逻辑。这既兼顾了探索效率和工程规范性,也不至于让 Notebook 变成“只可运行不可维护”的代码坟场。
还有一个很多人不知道的小技巧:在 VSCode 里按Ctrl+Shift+P输入Jupyter: Export to Python Script,可以把当前 Notebook 里的所有代码单元格直接导出成一个.py文件,注释里会自动附带每个单元格的来源位置,方便你快速把草稿转成正式脚本。
这套 Anaconda + VSCode + Jupyter 的组合,乍一看需要配置的东西不少,但一旦搭建完成,它会默默支撑起你接下来几个月甚至几年的编码工作。我在帮很多同事配完这套环境后,他们最常说的一句话是:“原来写 Python 可以这么省心。”希望这篇从安装到实战、从常见报错到使用心法的长文,也能帮你把开发环境一次配得明明白白。