Anaconda+Jupyter Notebook环境搭建与路径配置指南
每次换新机器或者带刚入行的朋友入门数据方向我基本都要把同一套动作重放一遍装 Anaconda、起 Jupyter Notebook、再老老实实把路径配置捋顺。听起来像三件不值一提的小事实际上每一件都能让人卡住半天——装完发现在命令行里敲 python 没反应Jupyter 启动了浏览器却打不开单元格里点运行光标转两圈又恢复原样改完工作目录下次启动又跳回默认位置。这些问题的根子九成不在软件本身而在路径。我前后在 Windows、macOS 和几台 Linux 机器上来回折腾过好几轮也帮人远程收拾过各种装到一半的残局最后沉淀下来的就是这一套组合Anaconda 负责把解释器和科学计算依赖一锅端Jupyter Notebook 负责把写代码、记笔记、出图这件事塞进浏览器里路径配置负责让前面两个东西能互相找到对方。这篇内容面向的是刚准备动手装环境的初学者也面向那些装过但总感觉哪里别扭、想一次性把链路理顺的人。你可以把它当成一份动手清单边看边操作每一步为什么这么做我都会讲清楚。1. 为什么我最后又回到了 Anaconda 加 Jupyter 这套组合1.1 从裸装 Python 踩过的第一个坑说起刚接触的时候我图省事直接去下载了一个几百兆的 Python 安装包一路下一步然后打开命令行 pip install numpy装得挺顺利。那段时间感觉一切正常直到我要在同一台机器上跑两个项目一个项目要求某个库的旧版本另一个项目要求新版本。pip 全局装装完这个就把那个覆盖掉了改来改去最后两个项目都跑不起来。更麻烦的是科学计算那一套东西numpy、scipy、pandas、matplotlib在某些平台上如果只靠源码编译安装光编译时间就能磨掉人一整个下午中间还容易因为缺少编译器或者运行库直接报错中断。裸装 Python 的问题不在于它不好而在于它太干净了。它只给你解释器和标准库剩下的一切都要你自己处理包括依赖版本、编译环境、二进制兼容性。这对老手来说是自由对刚上手的人来说就是无底洞。所以我后来重新审视自己做环境的方式核心诉求无非三条第一常用库要能一键装好别让我为了跑通一个 demo 先跟编译器斗智斗勇第二不同项目之间要能隔离互不干扰第三切换项目的时候要快不能每次都重新配一遍。这三条诉求恰好就是 Anaconda 发力的地方。1.2 Anaconda 发行版到底给你打包了什么东西很多人对 Anaconda 有个误解觉得它就是个装了很多库的 Python其实它的核心价值在 conda 这个包管理器和环境管理器上。它打包给你的不只是 Python 解释器还包括一套预编译好的科学计算栈、一堆常用工具以及 conda 命令本身。预编译这件事很关键意味着你装 numpy 的时候拿到的是已经编译好、和当前系统位数匹配的二进制包不需要你本地有编译器也不需要漫长的源码编译。conda 的另一个重点是环境隔离。你可以建一个叫 work 的环境里面是 Python 3.10 加一套库再建一个叫 test 的环境里面是 Python 3.8 加另一套库。两个环境各自有独立的目录各自的 site-packages互不污染。切换只需要一条 activate 命令。这跟前面裸装 Python 时版本互相覆盖的窘境形成了鲜明对比。我在实际使用中最看重的一点是conda 管的不只是 Python 包它还能管一些非 Python 的二进制依赖比如底层的数学库这种跨语言打包的能力在处理某些科学计算库的依赖链时特别省心。当然Anaconda 完整版体积不小好几个 G装完占硬盘。如果你机器空间紧张可以了解一下 Miniconda它只带 conda、Python 和极少量基础包剩下的按需装。我自己的习惯是主力开发机装完整版 Anaconda省事临时用的虚拟机或者容器里用 Miniconda轻量。这个取舍后面我还会再细说。1.3 Jupyter 与路径配置在整条链上的位置环境装好了总得有个地方写代码。命令行直接敲 python 进交互模式能用但不好保存、不方便图文混排、不能一边写代码一边记笔记。Jupyter Notebook 解决的正是这件事。它的运行模型有点像餐厅点单浏览器是前台服务员负责接收你写的每一段代码后台真正干活的叫内核收到订单后执行代码但前台和后台不在同一个进程里它们通过网络端口通信。这个结构解释了很多经典问题——比如为什么浏览器关了页面之后后台还在跑、为什么有时候页面显示内核忙但其实什么都没发生、为什么换个工作目录会影响相对路径读取文件。而路径配置是这三者之间的胶水。装完 Anaconda 之后系统怎么知道 python 命令指的是哪一个解释器Jupyter 怎么知道该用哪个环境的内核来执行代码它启动之后默认落在哪个目录这些问题全部由路径决定。路径配置没理顺就会出现命令行里 conda 用得好好的Jupyter 却用的是另一个 Python这种诡异现象。所以我一直把这三件事看成一套完整链路Anaconda 提供底座和隔离能力Jupyter 提供交互界面路径配置负责缝合。任何一环没接好整体的体验就会卡顿。下面的内容我会按这个顺序一层层往下拆。2. Windows 下 Anaconda 安装的完整实操与勾选判断2.1 下载渠道与版本选择该怎么拿主意先说渠道。Anaconda 的安装包我只建议从它官方站点获取理由很直接第三方站点转载的安装包有时版本陈旧有时被捆绑了别的东西出了问题很难排查。进到官方页面后你会看到两个主要产品Anaconda Distribution 和 Miniconda。前者是大而全的完整发行版后者是精简版。判断标准其实很简单看你要不要经常从零开始跑数据处理、机器学习这类需要大量预装库的场景。要就上完整版只是偶尔写点脚本、追求轻量就选 Miniconda。版本这块分两个维度。一个是操作系统位数现在基本全是 64 位选 x86_64 那个就好32 位版本在没有特殊遗留需求时不用考虑。另一个是内置的 Python 版本。这里我给个实在的建议不要盲目追最新的大版本。新版本 Python 出来之后很多第三方库要过一段时间才跟上如果你装的版本太新可能遇到某个库还没发布对应版本的 wheel 包conda 就只好尝试源码编译又会绕回前面那个坑。稳妥的做法是选一个已经发布一年左右、社区生态跟得上的版本。安装包文件名里通常带着 Python 版本号看清楚再下。还有一点值得提官网下载页面会推荐你填邮箱订阅之类的东西这些不影响下载本身跳过就行。下载完成后核对一下文件大小和文件名跟页面上标的一致就没问题。如果网络环境导致下载很慢那是另一个话题本质上是网络传输问题跟软件本身无关多试几次或者换个时间段通常能改善。2.2 安装向导里那几个勾到底要不要打安装向导走到后面会有几个勾选项这是最容易被忽视、也最容易埋雷的地方。我一个个说。第一个是安装范围选项大意是仅为我安装和为所有用户安装。个人电脑就选仅为我安装路径会落在用户目录下不需要管理员权限后续出问题也好清理。多人共用的机器可以选为所有用户但要注意安装路径权限否则后续装包可能因为没写权限失败。第二个是安装路径。这里有个硬性要求路径里不要出现中文、空格和特殊符号。原因是相当一部分底层工具在处理路径字符串时对空格和中文的支持并不可靠会遇到莫名其妙的报错。我一般会把路径改成一个简短的英文目录比如盘符下直接一个 conda 文件夹一眼看得清。第三个是是否把 conda 加入系统 PATH 环境变量。官方默认是不勾的而且旁边会写一句不太推荐。很多人不解觉得勾了才方便。我的做法是跟着官方的建议不勾。原因在于一旦把 Anaconda 的目录写进系统 PATH它里面的 python、pip 等命令会和系统里其他 Python 抢位置到底哪个先生效取决于 PATH 里谁排在前面这种隐式的顺序冲突极难排查尤其当你后来还装了别的开发工具时。正确的打开方式是不污染系统 PATH要用的时候通过开始菜单里的 Anaconda Prompt 进去那里面已经自动配好了 conda 相关路径。第四个是是否把 Anaconda 注册为系统默认 Python。同理不勾理由和上面一样避免跟其他解释器打架。把这几条理顺安装过程本身没什么难度一路下一步即可。真正决定后续顺不顺的就是这几个勾。2.3 验证安装conda info 与目录布局的理解装完之后别急着写代码先验证。从开始菜单打开 Anaconda Prompt敲 conda --version能打印出版本号说明 conda 本体没问题。再敲 conda info这个命令值得你多看两眼它会告诉你当前 conda 的版本、Python 版本、base 环境的路径、channels 配置、以及平台信息。把 base 环境的路径记一下后面配 Jupyter 会用到。接着敲 where pythonWindows 上或 which python类 Unix 系统看看解析到的到底是哪个 python。如果这一步解析到的路径指向你刚装的 Anaconda 目录说明当前这个终端里路径是对的。这个验证习惯很重要后面遇到明明装了库却导入失败的时候第一件事就是回来敲一遍这个命令看看当前解释器是不是你以为的那个。顺便理解一下 Anaconda 的目录结构。安装根目录下通常有 envs 文件夹你新建的每个环境都作为子目录放在这里还有 pkgs 文件夹这是包缓存目录conda 下载的安装包会先放这儿再安装删掉它不会影响已装好的环境但会导致下次装同样的包重新下载所以空间允许的话不用急着清理。理解了这个布局你就明白为什么环境是可以整个搬走或者打包的——本质上它们就是一堆有组织的文件夹。2.4 镜像源与包缓存相关的路径配置默认情况下 conda 从官方源拉包国内访问速度可能不理想慢的时候装一个大一点的库能耗很久。常见的优化手段是配置镜像源把下载地址指向国内几家高校或企业维护的镜像站这是纯粹的网络加速手段配置方式是在用户目录下建一个配置文件把 channels 指向镜像地址。配置文件一般叫 .condarc内容格式是 YAML。配置文件里几个我常调的字段channels 下面按顺序列镜像地址conda 会按顺序去找包show_channel_urls 设为 true这样装包的时候能看到包具体来自哪个源方便判断镜像有没有生效如果某个包在镜像上找不到conda 会回退到别的源这个行为可以通过 channel_priority 来调整。配置完之后敲一次 conda clean -i 清掉索引缓存再试不然可能还在用旧的索引。镜像源配置属于一次性投入长期受益的事装完之后基本不用再动。注意配置文件是 YAML 格式缩进必须用空格不能用 Tab。缩进错了会导致 conda 直接报配置解析失败而且报错信息有时不会直说是缩进问题容易让人绕圈子。验证镜像是否生效的办法很简单随便装一个之前没装过的小包观察下载地址里是否出现了镜像域名。这一步确认之后你就有了一个下载速度快、可用的包管理底座接下来可以放心去配 Jupyter 了。3. Jupyter Notebook 的安装、启动与工作目录打通3.1 conda 装还是 pip 装两种方式差在哪关于 Jupyter 的安装方式我见过不少人纠结。结论先给如果你已经在用 conda 管理环境那就用 conda 装如果你是在一个纯 pip 的虚拟环境里那就 pip 装。核心原则是同一个环境里尽量不要混用两种包管理器装同一套相关依赖因为这俩各自维护一套依赖解决逻辑混着来容易出现同一个库被装了两份、版本对不上的情况。用 conda 装的好处是依赖关系由 conda 统一协调尤其是涉及一些底层库的时候它会尽量给你挑一组互相兼容的版本。命令很直白在目标环境激活状态下执行安装 jupyter 相关组件的命令即可。装完之后 jupyter 命令就可以在该环境里使用了。这里有个坑要提前说不要在 base 环境里什么都装。base 环境应该保持相对干净只放 conda 本身和少量基础工具。真正干活的环境另建比如我通常建一个叫 dev 或者按项目名命名的环境把 Jupyter 和项目依赖都装在这个环境里。这样做的好处是当某个环境被搞坏了删掉重建就行不会波及整个 Anaconda 安装。3.2 生成配置文件并修改默认工作目录这是整个 Jupyter 部分最关键的一步也是很多人抱怨每次打开都落在默认目录的根源。Jupyter 启动时的工作目录决定了你新建笔记本、读取数据文件时的相对路径基准。默认情况下它可能落在你的用户主目录或者某个系统目录这不是我们想要的。解决办法是先生成配置文件。在命令行里执行生成配置文件的命令它会在你的用户目录下创建一个 Jupyter 的配置目录里面放着一个配置模板文件。这个文件里绝大多数配置项都被注释掉了意思是不生效、用默认值。打开它找到和工作目录相关的那个配置项把注释去掉值改成你想要的目录路径。这里有个版本差异必须提醒较老版本的 Jupyter Notebook 用的配置项名和较新版本不一样新版本里有些项被重命名或者迁移到了 ServerApp 下。如果你改了一项发现没效果八成是版本对应错了配置项名。判断方法是在配置模板里搜关键词目录相关的英文字符串看当前版本里哪一项是生效的、注释说明是什么照着改。改路径的时候Windows 下的路径字符串注意反斜杠的写法在 Python 配置文件里反斜杠是转义字符稳妥的做法是用正斜杠或者用原始字符串的写法。用了正斜杠系统同样能正确识别。改完之后保存重新启动 Jupyter观察它落地的目录是不是你设置的那个。如果还是不对见后面第五部分的排查思路。3.3 启动方式、端口占用与浏览器打开逻辑启动 Jupyter 的方式是在命令行敲启动命令。它会做几件事启动一个本地服务端占用一个端口默认是某个固定端口被占用时自动往后找然后尝试打开你的默认浏览器把服务地址带一个带 token 的链接打开。这里解释两个常见现象。第一浏览器没自动打开。这不代表启动失败服务很可能已经在跑了。看命令行输出的那几行最后通常会打印一个完整地址复制到浏览器里手动打开就行。为什么没自动打开可能是默认浏览器设置的问题或者启动参数里没勾选自动打开。第二端口被占用。如果你同时起了多个 Jupyter 实例或者别的软件占了这个端口Jupyter 启动时会自己往后找空闲端口命令行输出里的地址会跟着变以输出的为准。如果你想要固定端口可以在配置里或者启动参数里指定但没必要让它自己找更省心。还有一个容易忽略的点启动 Jupyter 的那个命令行窗口不能关。那个窗口就是服务端的宿主进程窗口一关服务就停了。有人习惯把它最小化以为没影响其实它一直在后台撑着。想关的时候在窗口里按中断组合键等它优雅退出比直接叉掉窗口更干净。3.4 给环境注册内核让 Jupyter 认识你的环境这一节解决一个高频困惑我明明在一个装了某库的环境里怎么 Jupyter 里 import 那个库就报找不到原因是Jupyter 执行代码用的是它自己注册的内核而内核未必是你以为的那个环境。解决方法是把目标环境注册成 Jupyter 的一个内核。做法是在目标环境激活的状态下先确保这个环境里装了一个用于连接 Jupyter 的桥接组件然后用注册内核的命令指定一个显示名称把它写进 Jupyter 的内核列表。注册完成后在 Jupyter 界面里新建笔记本时就能在核Kernel下拉列表里看到你刚刚注册的那个名字选它之后运行的代码就用这个环境了。这个机制的好处是你可以在一个 Jupyter 服务里同时挂好几个环境的内核按项目切换不用为了换个环境重启服务。我自己的习惯是每建一个项目环境就顺手注册一次名称跟环境名保持一致过几个月回头看也不会乱。注册内核这个动作本质上是往 Jupyter 的内核目录里写了一份描述文件告诉它去哪里找这个环境的解释器。理解了这一点你就明白为什么删环境之前最好把对应的内核描述也清掉不然列表里会留一个点了就报错的名字。4. 路径配置最容易翻车也最值得花时间的一环4.1 PATH 优先级与机器上装了两个 Python的混乱PATH 是操作系统找可执行文件的搜索路径列表按顺序找找到第一个就用后面的不管。理解了这条规则很多诡异现象就解释得通了。比如你机器上既有系统自带的 Python又有 Anaconda 的 Python命令行里敲 python最终用哪个完全取决于 PATH 里谁排前面。我遇到过最典型的场景是安装 Anaconda 时勾了加入 PATH后来又装了某个开发工具自带的 Python两个都在 PATH 里顺序靠运气。结果就是今天装库装到了 A 环境明天运行却在 B 环境报找不到库人完全懵。排查方法就是我前面说的敲 where python 看解析到哪个再对照你以为的路径不一致就是 PATH 顺序问题。治本的办法有两个方向。一个是不把 Anaconda 加进系统 PATH需要的时候走 Anaconda Prompt那个终端启动时会把 conda 相关路径临时加到最前面用完关掉不污染全局。另一个方向是如果你确实需要在普通终端里用 conda那就把它加进去但要确保它排在系统 Python 前面并且自己心里清楚这个顺序。两种都行怕的是稀里糊涂加进去又不管顺序。提示养成一个习惯任何环境出问题第一步先确认当前命令行的 python 指向哪里。这一条能省掉一半的无效排查。4.2 虚拟环境、内核、工作目录这三者到底是什么关系这三个概念经常被混为一谈我掰开说。虚拟环境是一堆解释器和库的集合是一份独立的目录解决的是这个项目用这套库、那个项目用那套库的问题。内核是 Jupyter 用来执行代码的后端进程一个内核需要绑定到某个具体的解释器上通常是某个虚拟环境里的解释器解决的是我这段代码到底在哪个环境里跑的问题。工作目录是 Jupyter 启动时所在的文件夹解决的是相对路径以谁为基准的问题。它们相互独立可以自由组合。你可以理解为环境决定你有什么工具内核决定这次的活谁来干工作目录决定你站在哪个房间里干活。常见的事故是三者错配比如环境装好了、内核也注册了但工作目录设到了另一个盘笔记本里写个相对路径读文件就找不到了。把这三者的关系在脑子里理清楚配置的时候就不会乱。4.3 两个核心配置文件的关键参数速查实际工作中路径相关的配置集中在两个文件上conda 的配置文件和 Jupyter 的配置文件。我把常用的几项整理成表方便对照。文件关键配置项作用建议值conda 配置channels指定包下载源及其优先级顺序镜像源在前官方源兜底conda 配置show_channel_urls安装时显示包的实际来源trueconda 配置envs_dirs指定新环境的存放目录放在空间大、路径纯净的盘conda 配置pkgs_dirs指定包缓存目录同上的盘避免系统盘被塞满Jupyter 配置工作目录项启动时的默认工作目录你的项目根目录Jupyter 配置是否自动打开浏览器启动后是否自动拉起浏览器按个人习惯Jupyter 配置端口配置指定或指定范围留空让它自选envs_dirs 这一项值得单独说。默认情况下新环境建在 Anaconda 安装目录下的 envs 里如果你系统盘空间紧张把它指到另一个大盘上是个好选择。注意一旦改了之前建在默认位置的环境还在原地新建的才会去新位置切环境的时候相应路径也要对应上。Jupyter 那边配置项命名随版本变化我建议不要死记项名而是打开生成好的配置文件在文件里搜关键词根据当前版本的注释提示来改。这样做虽然多花两分钟但避免了对着一份过时的教程改半天没效果的挫败感。4.4 多版本共存下的路径隔离策略在真实项目里同时维护多个 Python 版本几乎是常态。老项目可能还停留在较老的 Python 上新项目用新版本。这时候路径隔离就变得非常重要。我的策略是这样的不动系统 Python所有项目环境都由 conda 建每个环境一个明确的名字建的时候指定 Python 版本。需要哪个环境就激活哪个命令行窗口顶部通常会显示当前激活的环境名一眼就能看出自己在哪。Jupyter 这边把每个需要用的环境都注册成内核名字带上前缀区分。这样在一个 Jupyter 页面里就能横向切换不会出现这个 notebook 到底用的哪个环境的困惑。还有一个小技巧笔记本第一个单元格可以放一行打印当前解释器路径的代码运行一次把路径打出来存档的时候一并留着日后回头看这个笔记本跑在什么环境里一目了然。这招在团队协作或者跨机器迁移的时候特别有用。再补一句关于隔离的边界。conda 环境之间是隔离的但它们共享 conda 的包缓存所以环境数量多也不至于把每个环境的包都下载一遍物理占用比你想的友好。真正需要注意的是如果你在某个环境里图省事用 pip 装了些东西那这些包不受 conda 管理删环境的时候会一起删掉但如果你手动往环境目录里拷过文件那些也要自己清理。5. 常见报错与排查技巧实录5.1 Jupyter 打不开、单元格执行代码没有反应这两个现象我见得最多分开说。Jupyter 打不开先分清是服务端没起来还是浏览器的问题。命令行窗口有没有正常输出、有没有停在等待状态是判断依据。如果服务端起来了、地址也打印了那就是浏览器的事手动复制地址打开即可。如果服务端压根没起来看报错常见的是配置文件语法错误导致启动中断或者端口范围全被占满。单元格执行代码没反应表现是点了运行方括号里一直是星号或者不显示序号代码像没执行。原因通常有三类。一是内核没连上界面上标题栏或者状态区会提示这时候要么重启内核要么检查内核对应的解释器是否存在。二是代码本身进入了长时间循环或者阻塞等待看起来像卡住其实是真在跑这种情况可以另开一个单元格测试简单输出判断内核是否还活着。三是内核进程崩了比较少见但存在重启服务端能解决。我的排查顺序是先看状态提示再重启内核最后重启服务端基本能覆盖绝大多数情况。还有一种隐蔽情况是你在一个环境里装了库但 Jupyter 当前用的内核是另一个环境代码里 import 报错但界面看起来一切正常。这时候按前面说的检查内核和环境的对应关系。5.2 ImportError: DLL load failed 这类错误怎么理顺这类报错信息里通常带着某个具体的包名意思是加载这个包的动态链接库时失败了。它的根子往往是二进制不兼容而不是这个包本身有问题。常见的几种诱因运行库缺失某些编译产物依赖系统里的一组运行库缺了它就加载不了架构不匹配比如包是为 64 位编译的跑在了 32 位解释器上或者反过来同一个包的多个版本混在一起路径里能同时找到两个来源加载时挑错了。处理这类问题的思路是先确认当前解释器的版本和位数再确认报错的那个包是从哪来的。用包管理命令查它的来源和版本如果来源混乱最干净的办法是把这个环境里相关的包卸载干净重新用单一来源安装。如果反复出现考虑重建整个环境通常比逐个修要快。还有一个常被忽略的点是某些包之间有隐含的版本搭配要求单独升级其中一个就会把整套关系打乱这种时候不是升级而是降级或者按组合安装。注意遇到这类底层加载错误不要第一反应去网上搜一堆命令挨个试。先老老实实把当前解释器路径、版本、位数、报错包版本查清楚信息收集到位问题基本就定位了一半。5.3 代码自动补齐不生效与 Markdown 目录语法的处理自动补齐这事先说清楚它不是 Jupyter 内核的原生功能。基础的 Jupyter Notebook 环境对代码提示的支持比较有限变量提示、函数参数提示这些通常需要额外的扩展组件来提供。安装并启用相应扩展之后按下补全快捷键才会有比较像样的提示体验。如果你发现按了没反应先确认扩展是否装好、是否在配置里启用、以及当前内核是否支持。不同版本的兼容性也有差异装之前看看扩展的说明别装了个和当前版本对不上的。再说 Markdown 目录。原生 Jupyter Notebook 的 Markdown 单元格并不自带根据各级标题自动生成可点击目录这种语法很多教程里写的目录语法是某些 Markdown 渲染器的扩展特性在 Jupyter 里不一定生效。想在 Notebook 里实现目录导航主流做法是装目录类扩展它会扫描笔记本里各级标题生成一个侧边或者悬浮的目录树点了能跳转。如果你只是想在导出后的文档里保留目录那又是另一条路靠导出工具在转换时生成。这两条路经常被混淆需要什么就装什么别指望一套配置两头通吃。5.4 一份可以直接对着查的排查速查表把上面这些整理成表遇到问题先对照能少走很多弯路。现象最可能的根因优先尝试的处理命令行敲 python 不是预期版本PATH 顺序问题查解析路径调整顺序或用专用终端Jupyter 启动后浏览器没打开自动打开失效手动复制输出的地址打开单元格运行无反应内核未连接或已崩重启内核再不行重启服务端导入库报找不到内核和环境不匹配检查并重新注册正确的内核加载动态库失败版本或架构不兼容查版本位数重建环境工作目录不对配置文件项写错或版本不匹配按当前版本改对应配置项自动补齐没反应扩展未启用确认扩展安装并启用装包速度慢源不可达配置镜像源并清理索引缓存6. 和 PyCharm、VSCode、nvim 这些工具的衔接6.1 在 PyCharm 里挂上 Anaconda 的解释器环境是 Anaconda 管的但你可以把它接到 PyCharm 里用。思路是在 PyCharm 的项目设置里找到解释器配置选择添加解释器然后指定到 conda 环境的目录挑一个已存在的环境挂上去。挂好之后PyCharm 里看到的包列表就是你那个环境里的包安装新包也会装到那个环境里和 Jupyter 用的是同一套依赖不会出现两边打架。我踩过的一个坑是挂解释器的时候要指向环境目录里的 python 可执行文件而不是指向 conda 本身。另外一个细节是如果你改了 conda 的 envs_dirs新建的环境位置变了PyCharm 里要按新位置去找。挂好之后记得检查一下项目的运行配置是不是用的这个解释器有时候项目级别和默认级别是两套设置改了一个忘了另一个。6.2 VSCode 的 Jupyter 插件使用与导出 HTMLVSCode 里通过 Jupyter 相关插件也能开关互地跑笔记本底层仍然是内核那套机制。用之前要确保插件装好然后选择内核这里选的就是你注册过的那些环境。相比浏览器里的界面编辑器里的体验在代码补全、跳转、调试上更顺手适合把笔记本当成代码来认真写。导出 HTML 这个需求常见做法是用命令行工具把笔记本文件转换成 HTML或者用编辑器插件提供的导出功能。命令行转换的好处是可以批量和脚本化一次转一批文件。转换时留意源码是否要保留、输出是否要内嵌这些参数会影响生成文件的大小和可读性。如果你的笔记本里有大量图表输出内嵌会显著增大文件体积这时候可以考虑把图片单独导出。6.3 在 nvim 这类终端编辑器里连 Jupyter 的思路有些人主力是终端里的编辑器也想把 Jupyter 的交互能力接进来。思路一般有两种。一种是外部插件把当前编辑的文件发送到一个正在运行的内核里执行把结果贴回来本质上是复用你已经起好的 Jupyter 服务。另一种是用格式转换工具把普通脚本和笔记本文件互相转脚本里用特定的注释标记单元格边界这样你既能用纯文本方式管理代码又能临时转成笔记本分享给别人。这两条路对新手来说不算必要但如果你已经习惯了终端工作流了解它们存在的好处是你可以在不改变主力编辑器的前提下享受 Jupyter 的执行和可视化能力。核心还是那句话内核和环境的绑定关系不变工具只是通往内核的不同入口。实际操作久了会发现Anaconda 加 Jupyter 加路径配置这套东西真正难的不是每一步的命令而是这些步骤之间的衔接关系。我自己的体会是每换一台机器先把 PATH 那条线想清楚再动手装装完立刻验证解释器指向然后才去配 Jupyter 的工作目录和内核顺序对了后面基本不会返工。还有个小习惯分享给你把几个关键命令记在一个随手能翻的备忘录里包括查看 conda 信息、查看当前解释器路径、生成 Jupyter 配置、注册内核这几条换机器的时候照着敲一遍十几分钟就能把一套干净的环境搭起来。这套流程我用了很久每次重建环境都靠它比临时到网上搜教程靠谱得多。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →