☰
Anaconda安装Jupyter Notebook完全指南:环境配置与排错
2026/10/2 18:45:34 网站建设 项目流程

用Anaconda装Jupyter notebook这件事,搜索量一直居高不下,但同一个人搜索三四次的情况也特别多——要么第一次装完Anaconda找不到Jupyter入口,要么就是不知道还得自己创建conda环境,再要么遇到了各种报错只能推倒重来。我帮不少人处理过这类环境问题,也在自己机器上反复卸载、重装过好多次,整理了一套从安装到排错都能直接跑通的操作路径。

先确认一下你现在的真实状态:是不是已经通过官网或国内镜像下载了Anaconda?装完之后在“开始菜单”里能找到Anaconda Prompt吗?如果你连Anaconda都还没安装,建议直接从本篇文章第2部分开始操作;如果你已经装好但是Jupyter notebook打不开、单元格运行没反应,或者报了一堆DLL、ImportError的错误,建议直接跳到第5部分按表排查。整套流程走一遍,大概需要15分钟,方向对了就能少走很多弯路。

1. 为什么是Anaconda搭配Jupyter notebook

1.1 Anaconda解决的是什么问题

Python本身只是一个解释器,但实际使用的时候还要面对安装包、管理依赖、切换版本这些琐碎事情。裸装Python最大的痛点就是:今天给项目A装了一个旧版本的numpy,明天项目B需要新版本,一升级把项目A搞挂了。Anaconda给出的解法是用conda这个包管理器把环境隔离开来,不同的项目可以用不同环境,互不干扰。

Anaconda默认带了很多数据分析常用的包,比如numpy、pandas、matplotlib、scikit-learn,装完不用再单独pip install。我自己后来还是习惯建一个干净环境单独用,但不可否认,对新手来说“装完即用”的体验还是很重要的。conda还负责管理Python解释器版本,意味着你可以在同一台机器上跑Python 3.9的环境,也可以跑Python 3.11的环境,随时切换,这个能力在配合不同项目时尤其有用。

1.2 Jupyter notebook在数据工作中的定位

Jupyter notebook的核心体验就是把代码、运行结果、图表、说明文字全部塞在同一个文档里,按单元格运行。你不需要一次性写好一整个脚本才能跑出结果,而是像写实验记录一样,一段一段地写、一段一段地看结果。这种交互方式非常适合数据分析、算法调试、教学演示这类需要频繁“试一下”的场景。

我平时代码习惯还是用IDE比较多,但一旦涉及探索性的数据处理,一定会把Jupyter开起来。比如给一堆CSV做清洗,每一步的结果都用DataFrame直接显示在页面上,边看边改,效率和幸福感都远高于在IDE里跑完整个脚本再回去看输出。可以说,Jupyter notebook已经是数据科学领域事实上的标配交互工具。

1.3 这套组合适合谁用

最典型的人群有三类:

  • 数据分析和机器学习初学者,不想在环境配置上花太多时间,装完Anaconda就直接打开Jupyter开始练手;
  • 科研工作者、学生,需要用Notebook记录实验思路、生成可视化图表,甚至直接导出成报告或讲义;
  • 已经有Python基础,但被包管理、多版本Python折磨过的开发人员,需要一套整洁的多环境方案。

如果你是这三类之一,那这套组合基本就是为你准备的。

2. 先把Anaconda装对:安装前必看的事项

2.1 下载安装包的三个渠道

第一选择是去Anaconda官网下载,官方链接是 www.anaconda.com/download。点进去页面会根据你的操作系统自动给出安装包,Windows选64位图形化安装包,Linux选对应的.sh脚本。官网下载的优点是新版本第一时间可拿到,缺点是服务器在国外,速度不稳定,慢的时候几百KB甚至几十KB每秒,一个700MB的包可能要下半小时以上。

第二选择是清华大学开源软件镜像站,地址是 mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,这个镜像在高校圈子里使用频率非常高。下载时注意版本号规律,比如Anaconda3-2024.10-1-Windows-x86_64.exe,其中2024.10是版本号,Windows表示平台,x86_64表示64位。镜像里还有Linux、macOS等平台文件,根据自己系统选。

第三选择是北京外国语大学镜像源,或者一些云服务商提供的社区镜像,但稳定性参差不齐,普通用户还是优先前两个渠道。

提示:不管从哪个渠道下载,都尽量下载最新的稳定版本。Anaconda官方现在已经不单独区分Python 2和Python 3安装包了,统一的安装包默认支持Python 3系列,装完后可以用conda创建任意版本的虚拟环境。

2.2 安装过程的关键选项

Windows下安装Anaconda时要重点注意两个勾选项。

第一项是“Add Anaconda3 to my PATH environment variable”,意思是把Anaconda加入系统PATH。初始默认是不勾选的,官方这样做是为了避免影响机器上已有的Python。如果你这台电脑基本不装其他Python,我建议你勾上。如果不勾,后续使用conda或jupyter命令时就得额外配置,很多“无法识别conda命令”的问题就是这个选项没勾导致的。

第二项是“Register Anaconda3 as my default Python 3.12”,建议勾选,否则系统里已有的Python程序可能继续用旧版本,导致命令行里输入python跑出来的版本和你预期不一致。

安装路径强烈建议不要放在默认的C:\Users\用户名\anaconda3,因为Windows用户名如果是中文或者带空格,后面一堆工具会在路径解析上出问题。我自己习惯改成 D:\Anaconda3 这种纯英文路径,干净且不容易踩坑。

安装过程比较久,正常需要5到10分钟,过程中看到“Loading applications”之类的内容属于正常现象,这一步是在扫描系统里已有的应用并建立关联。

2.3 环境变量:装完最容易忽视的一环

如果你安装时没有勾选加入PATH,那么装完后在cmd或PowerShell里输入conda会提示找不到命令。解决方式是手动添加环境变量。

Windows的操作路径是:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。在系统变量中找到Path,点击编辑,然后把这三个路径加进去:

  • D:\Anaconda3
  • D:\Anaconda3\Scripts
  • D:\Anaconda3\Library\bin

如果你的安装路径不同,把盘符和目录名对应替换就行。添加完成之后,重新打开一个终端窗口,输入 conda --version,能正常打印版本号,说明PATH生效了。

Linux或macOS用户则是在终端里修改 ~/.bashrc,加入 export PATH="/home/你的用户名/anaconda3/bin:$PATH",然后执行 source ~/.bashrc 让配置生效。如果你用的是zsh,就编辑 ~/.zshrc。

2.4 装完怎么确认可以用

打开Anaconda Prompt,依次执行以下几条命令:

conda --version python --version jupyter --version

三条命令分别用来确认conda、Python、Jupyter是否都正常安装。如果jupyter --version报错找不到,大概率是安装时候的组件缺失,最省事的办法是执行 conda install jupyter 重新补装一次。

再确认一下base环境的路径对不对,输入 where python,Windows下会返回几条路径。如果第一条是Anaconda目录下的python.exe,说明Anaconda已经是默认Python环境。

3. 启动Jupyter notebook并完成网页端基础配置

3.1 两种启动方式与各自适用场景

Windows用户最直观的方式是点“开始菜单”→“Anaconda3”→“Jupyter Notebook”,系统会自动在默认浏览器打开 http://localhost:8888 这个地址,注意这个地址可能出现8888、8889、8890等不同端口,取决于端口占用情况。

命令行方式则更自由一些:打开Anaconda Prompt,输入 jupyter notebook 回车,就会在终端显示一条日志,随后自动打开浏览器。命令行会占用当前窗口,中途不能关闭这个窗口,否则Jupyter服务会直接退出。这件事新手经常不明白,关了终端以后网页写着“服务器无响应”,然后又跑回搜索引擎问为什么。

如果你拿到了一台服务器或者远程机器,Jupyter的启动方式略有不同,通常需要加上 --ip 参数:

jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser

这里 --ip=0.0.0.0 表示允许所有来源的IP访问,--no-browser 表示不自动打开浏览器,然后你自己通过 服务器IP:8888 访问。注意远程访问时还要配置token密码,否则任何人都能连进来,安全问题很严重。

3.2 改变默认工作目录

默认情况下,Jupyter打开的是你启动命令所在目录。比如你在Anaconda Prompt里直接输入jupyter notebook,默认就定位到了用户目录 C:\Users\你的用户名,页面里看到的一堆文件夹可能不是你想要的。

如果你的项目文件集中放在D:\data\project,讲究的做法是先cd过去再启动:

cd D:\data\project jupyter notebook

这样打开之后页面直接定位到项目目录。我个人的操作习惯是,项目的Notebook文件都会和原始数据放在同一层目录,这样相对路径引用数据时不会乱。如果你实在想改默认入口目录,可以修改Jupyter的配置文件,执行 jupyter notebook --generate-config 生成配置文件,然后在里面找到 c.NotebookApp.notebook_dir 这一行,改为目标路径再取消注释。配置文件一般在用户目录下的 .jupyter\jupyter_notebook_config.py。

3.3 快速上手页面操作

Jupyter notebook页面本身不复杂,核心就是“单元格”。点击“New”→“Python 3”就可以新建一个Notebook文件,每个单元格有两种模式:代码模式和Markdown模式。

代码模式就是写Python代码的,写完按Shift加Enter运行,结果显示在单元下方;Markdown模式用来写说明文字、标题、公式,同样按Shift加Enter渲染成排版好的文本。

页面右上角会显示当前连接的内核状态:空心圆圈表示空闲,实心圆圈表示忙碌。代码在运行的时候圆圈会被填充,这时你可以继续编辑其他单元格,但运行的结果还是要等当前任务结束才回来。

文件保存后缀名是.ipynb,本质是一个JSON结构,所以Git里对比Notebook文件的改动会比较吃力,这也是后面你要接触版本控制时需要注意的点。

3.4 快捷键与效率习惯

  • Shift加Enter:运行当前单元格,并跳到下一个单元格;
  • Ctrl加Enter:运行当前单元格,但停留在当前单元格;
  • Esc进入命令模式,A在上方插入新单元格,B在下方插入新单元格;
  • M把当前单元格切换成Markdown模式,Y切回代码模式;
  • D按两下,删除当前单元格;
  • Tab键在代码中自动补全。

快捷键熟练之后,操作速度会有明显提升。另外我强烈建议养成“先让结果跑出来,再继续往下写”的习惯。如果一个单元格执行时间特别长,可以先检查函数是否陷入死循环,或者数据量是不是过于庞大——很多新手的Notebook越跑越慢,就是因为把大结果直接打印到输出里,占满了内核内存。

4. 进阶但必备:虚拟环境与Jupyter kernel

4.1 为什么推荐虚拟环境

Anaconda自带的base环境装了一堆默认包,直接在base里写项目很容易出问题:项目A需要tensorflow 1.x,项目B需要2.x;项目C要django 3,项目D必须用django 4。这些包在一个环境里共存几乎不可能完美,随便升个级就把另一个环境弄崩了。

虚拟环境就是解决这个问题的:每个环境都是独立的Python解释器加独立包集合,环境之间互不干扰。Anaconda里的conda create就是干这个用的。我自己实际维护的项目通常每个都会建一个独立环境,环境名就是项目名的缩写,这样哪天环境坏了直接删掉重建,不影响其他项目。

4.2 创建环境并安装Jupyter

在Anaconda Prompt里执行:

conda create -n myenv python=3.11

其中 myenv 是环境名,你可以改成有意义的英文名,比如tf_env、geo_proj。创建过程会提示安装哪些基础包,输入y确认。新增的环境里默认不自带Jupyter,需要再执行:

conda activate myenv conda install jupyter

这里装的是一个完整版的Jupyter,包括notebook、ipykernel、nbconvert等组件。你也可以用 pip install jupyter 来装,但既然用了conda管理环境,就尽量用conda装,依赖解析会更可靠。

在环境里直接执行 jupyter notebook,打开的确实是当前环境对应的Python解释器,页面里新建的Notebook也会使用当前环境的kernel,所以如果只在这个环境里用,其实不用额外配置。

4.3 把新环境注册成Jupyter kernel

问题出在“想从base环境切换到其他环境的时候”。比如你base里启动了Jupyter,然后想跑一个myenv环境下的项目,直接新建Notebook会发现内核只有base一个,选不到其他环境。

解决办法是把新环境显式注册给Jupyter:

conda activate myenv python -m ipykernel install --user --name myenv --display-name "myenv"

--name 是内核的标识名,--display-name 是页面上显示的名字。执行完这条命令后,重启Jupyter,页面“New”的下拉菜单里就会出现你注册的环境名称。

这个过程其实背后涉及ipykernel这个包,它负责让Jupyter前端和Python解释器之间建立起通信。每给Jupyter装一个新的环境,基本都要走一遍:建环境→装ipykernel→注册内核。

4.4 环境混乱时怎么清理

环境越建越多,终究会乱。列出当前所有环境用 conda env list;删除某个环境用 conda env remove -n 环境名。

Jupyter这边同样可能需要清理,删除内核的命令是:

jupyter kernelspec remove 内核名

注册了太多失效内核的话,Jupyter页面会变得越来越臃肿。我的习惯是,不再使用的环境和内核随手就清理掉,保持机器上的环境列表精简,比临时想起来再找要省力得多。

5. 常见问题排查与效率技巧

5.1 Jupyter打不开或网页白屏

这类问题排在所有问题列表里的第一位。浏览器打开了localhost:8888但一直转圈,或者页面空白,通常原因有以下几种:

一是终端窗口被关闭了,导致后端服务直接退出,浏览器当然连不上。解决办法是重启终端,再执行一次jupyter notebook。

二是端口被占用,Jupyter默认使用8888端口,如果之前有一个没退干净的进程占着端口,Jupyter会自动换到8889或者8890。但部分情况下浏览器仍然尝试连接8888,自然就打不开。执行 jupyter notebook --port=8888 强制指定一个端口通常能解决。

三是浏览器缓存、插件冲突。可以试试换Chrome无痕模式或者换Firefox访问,排除浏览器插件拦截的可能。

四是防火墙拦截了。Windows自带防火墙如果拦截python.exe网络访问,localhost也会被影响。首次运行Jupyter如果弹窗询问,记得勾选“允许访问”。

5.2 DLL加载失败类报错的解决思路

热搜里有一条很典型的报错:importerror: dll load failed while importing rpds。这类DLL加载失败问题的本质是,某个Python二进制扩展包在导入时找不到对应的动态链接库,或者动态链接库版本不兼容。

rpds这个包是很多数据处理库的底层依赖,如果它加载失败,pandas等上层库也会跟着崩。常见原因是conda和pip混装,把包版本搅乱了。处理步骤我一般这样来:

conda activate 你的环境 conda install rpds-py

如果还是不行,就重建一个干净环境,用conda统一安装所有依赖包。还有一种情况是系统缺少Microsoft Visual C++ Redistributable运行库,去微软官方下载最新版运行库装上,很多DLL问题就没了。

5.3 单元格执行没反应

你点击运行单元格,但什么反应都没有,既不报错也不输出结果。这种情况我见过太多次了。最常见的原因是内核挂掉了,但前端页面还没感知到。

先看页面右上角的内核状态图标,如果是实心圆圈且一直不变,多半是内核卡死了。处理方式是点击菜单栏的“Kernel”→“Restart”,把这个单元格的运行结果清空重置。如果重启后仍然这样,检查一下代码本身是否进入了死循环,比如while后面没有退出条件。

另一个可能的原因是浏览器和Jupyter服务之间断开了WebSocket连接。特别是你用远程服务器开Notebook时,如果网络不稳定或者走了代理,WebSocket经常掉线,表现就是页面还在但执行命令毫无反应。这种情形下,刷新页面重新连接通常能恢复。

5.4 ImportError与依赖冲突

新手最常见的场景是:pip install了一个想用的库,然后在Jupyter里import报错,找不到模块。问题根子往往在于,你装进去的库不在当前Jupyter环境里。

很多人习惯在普通的cmd窗口里执行pip install,而Jupyter是通过Anaconda启动的,cmd默认使用的是系统Python,两边根本不是一个环境。正确操作是:先在Anaconda Prompt里激活目标环境,再执行 pip install 或 conda install,然后在Jupyter里新建一个内核,确保内核也指向这个环境。

还有一种情况是报 from simpeg import ... ImportError: cannot import name 'mesh'。这类错误显示的是“模块不存在”或者“名字不存在”,通常是因为包版本里这个子模块在新版里改名了,或者装的是不完整的旧版本。解决办法是去这个包的用户文档里查对应版本的API名称,不要凭旧代码硬猜。

5.5 让Jupyter更好用:补全与目录

默认Jupyter的代码补全很基础,按Tab只能补全变量名和模块名,对方法参数、对象属性的提示帮助有限。想获得接近IDE的体验,可以在Jupyter里装nbextensions扩展,然后用它的Hinterland功能实现随时自动补全。

安装步骤:

conda install -c conda-forge jupyter_contrib_nbextensions jupyter contrib nbextension install --user

安装完成后重启Jupyter,会在页面顶部看到Nbextensions菜单,打开后勾选Hinterland,就能在代码编辑时自动弹出补全提示。

关于生成Markdown目录,也是很多人的需求。在nbextensions里勾选Table of Contents (TOC),然后新建的Markdown单元格里写标题,保存后可以在页面侧边看到自动生成的目录结构。较新版本的Jupyter Lab内置了目录功能,位置是左侧的列表图标,不再需要额外装扩展。

5.6 配合PyCharm使用的最后一块拼图

很多读者是Jupyter和PyCharm一起用的。PyCharm里配置Anaconda的方式不复杂:打开Settings→Project→Python Interpreter,选择“Add Interpreter”→“Conda Environment”,然后选择Existing environment,指向你Anaconda目录下的python.exe或envs目录里某个具体环境的python.exe。配好之后PyCharm里可以直接运行Jupyter Notebook文件,同时还能获得完整的代码跳转、调试和重构能力。

这里有个容易混淆的点:PyCharm里安装包走的是PyCharm的包管理器,它调用的是当前解释器对应的pip。如果你在PyCharm的Terminal里执行conda activate,需要确保Terminal已经配置了shell集成,否则也可能出现“PyCharm里的包命令识别不了conda环境”的情况。

我自己现在的日常流程是:项目研究阶段用Jupyter notebook做数据探索和算法验证,代码稳定后把关键函数抽成脚本,挪到PyCharm里做工程化修改。两边共用同一个conda环境,这样不管是Notebook里跑出来的中间结果,还是PyCharm里调试出来的逻辑,依赖环境是完全一致的,不会出现“在Jupyter里能跑,到PyCharm里就报错”的诡异问题。

Anaconda和Jupyter notebook这套组合,表面上看只是两个软件的叠加使用,实际涉及环境管理、包管理、内核工作机制这些底层概念。但把这些基础问题搞明白之后,后面学pandas、scikit-learn、PyTorch都会省心很多。第一次配置遇到报错不用慌,按上面列出的几个方向排查——先确认环境对不对,再看内核通不通,最后看依赖完整不完整——大多数问题都能自己解决。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询