news 2026/9/29 22:09:09

Jupyter Notebook安装避坑与启动排查全流程指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jupyter Notebook安装避坑与启动排查全流程指南

很多人第一次接触 Jupyter Notebook,都是因为要写 Python,但真正卡住的往往不是语法,而是“装不上、启动报错、文件存得乱七八糟”这类环境问题。这些年帮同事朋友处理过的安装疑难杂症,十个里有八个都能归到安装选型和启动配置上。这篇就把 Jupyter Notebook 的安装全流程、启动失败的排查思路、默认路径设置这些高频坑一次讲透,再附上几个日常使用中特别容易踩的小毛病和对应解法,希望你能少走点弯路。

1. 安装前先搞明白:你要装的到底是个什么环境

1.1 先理解 Jupyter Notebook 的运行机制

Jupyter Notebook 本质上是一个基于浏览器的交互式编程环境。你安装它,其实是往电脑里装了一个 Python 包,这个包会启动一个本地 Web 服务,默认监听 8888 端口,然后浏览器通过http://localhost:8888/tree访问到编辑界面。所有代码依旧在你的电脑上运行,网页只是编辑器、输出面板和文档展示层。

理解这一层特别重要,因为后面所有故障排查都绕着它转:

  • 启动时提示端口被占用,是因为 8888 端口被其他进程占了;
  • 浏览器打开空白或一直转圈,但命令行窗口没报错,多半是浏览器缓存了旧页面;
  • Windows 提示“找不到指定的程序”,往往是快捷方式指向的 Python 解释器路径不存在了。

把“网页 + 本地服务 + Python 内核”这三者的关系记清楚,后面排查的时候你就不会一头雾水。

1.2 三条安装路线怎么选

常见安装方式无非三种:Anaconda、Miniconda、pip。我给身边人做推荐时一般看他的使用场景来定:

安装方式适合人群优点缺点
Anaconda新手、不想折腾环境、需要科学计算全家桶开箱即用,自带 Python 和几百个常用数据包安装包接近 1GB,占空间,后续升级慢
Miniconda开发者、希望环境干净可控、按需装包安装包几十 MB,创建环境灵活,包管理顺手需要熟悉命令行操作,初次配置略多
pip已有 Python 环境、只需要 Notebook 功能一条命令完成,最轻量容易污染系统 Python 环境,包依赖冲突难收拾

如果你拿不准选哪个,我个人的建议是:电脑空间充足、纯粹想省事,直接 Anaconda;如果你平时写代码还要兼顾不同项目、希望环境隔离,那 Miniconda 更合适。

1.3 为什么我不建议直接往系统 Python 里装

很多老手栽跟头,恰恰是栽在最简单的pip install notebook上。系统 Python 里往往已经有其他项目依赖的包,Jupyter 本身又依赖一堆交互组件,稍有不慎就把包版本改了,轻则某些库升级后不兼容,重则把系统 Python 整个搞坏。更麻烦的是,你根本不知道是哪次安装弄坏的,只能靠回忆排查。

所以我现在无论在哪台机器上装 Jupyter,第一件事永远是先建一个隔离环境。用 conda 就是conda create -n jupyter_env python=3.11,用 venv 就是python -m venv myenv。隔离环境的好处是:将来不要了这个环境,直接删掉文件夹就行,系统环境干干净净。

2. 三种主流安装方式:从零到能用的完整过程

2.1 方式一:Anaconda 图形化安装

Anaconda 的图形安装基本没什么技术含量,官网下载对应系统的安装包,双击运行,一路 Next。唯一要注意的是安装过程中有个 “Add Anaconda to my PATH environment variable” 选项,新版默认是不勾选的。

这个选项很关键。勾选的话,以后你在任意终端都能直接敲jupyter,但可能和你已装的 Python 产生 PATH 优先级冲突;不勾选的话,你得通过开始菜单里的 Anaconda Prompt 才能进入当前环境。我的建议是:如果你不熟悉环境变量,保持默认不勾选,以后统一用 Anaconda Prompt 操作。

装完以后,开始菜单找到 Anaconda Prompt,输入:

jupyter notebook

程序会自动启动浏览器进入 Notebook 界面。这是最省心的一条路。

2.2 方式二:Miniconda 命令行安装

Miniconda 安装包很小,装完默认只有 conda 本身和一个基础 Python 环境。重点来了:Miniconda 默认并不带 Jupyter,你需要手动安装。

先创建一个专用环境:

conda create -n jupyter_env python=3.11 -y conda activate jupyter_env

然后安装 notebook:

conda install -c conda-forge notebook -y

这里我特别说一下为什么推荐conda-forge频道。默认的defaults频道不是不好,但conda-forge社区维护更活跃,Jupyter 生态里的很多新版本和补丁会更快同步过去。如果你在国内网络环境下安装很慢,可以配置国内镜像源加速,设置方法就是改 conda 的配置文件.condarc,把频道地址换成可用的国内镜像,之后conda install的速度会明显提升。

安装完成后启动:

jupyter notebook

如果你是新手且不喜欢敲命令行,Miniconda 这条路确实比 Anaconda 麻烦一点,但对电脑空间紧张或者喜欢折腾的人来说,这个代价值得。

2.3 方式三:已有 Python 环境,用 pip 补装

这个场景通常是你已经有了 Python 环境,比如装完 VS Code 自带的 Python,或者公司电脑里已经有一个 Python 版本不想动,只想临时用一下 Notebook。

稳妥的做法是先用 venv 建一个环境,切进去再装:

python -m venv jupyter_venv # Windows jupyter_venv\Scripts\activate # macOS / Linux source jupyter_venv/bin/activate pip install notebook

注意我特意避开了“直接在全球环境下 pip install”。你如果想“快速试试”,直接装也不是不行,但后面项目一多就很容易出现依赖冲突。建环境多敲两行命令,换来的是长期清净。

2.4 安装后必须做的验证

不管用哪种方式装完,都建议先验证一下安装是否完整。打开终端输入:

jupyter --version

如果能看到类似jupyter core: 5.x.x的输出,说明安装成功。接着输入:

jupyter kernelspec list

确认能看到python3内核。这一步很多人会忽略,但恰恰是它决定了你在 Notebook 里能不能正常执行 Python 代码。如果kernelspec list输出是空的,说明 Python 内核没有正确注册,后面写代码就只能看不能跑。

3. 启动失败排查:从“找不到指定的程序”到“突然打不开”

3.1 “找不到指定的程序”:快捷方式的锅和 PATH 的锅

Windows 上双击桌面快捷方式触发“找不到指定的程序”,这是我把这个问题归类的三个字:路径错。最常见的原因是快捷方式指向的pythonw.exe或者jupyter-notebook.exe路径已经不存在了。比如你升级了 Anaconda、把安装目录移动了位置、或者用优化工具清理过系统,都可能让原来的快捷方式变成“死链接”。

排查思路其实很简单:

  1. 右键快捷方式,属性里看“目标”一栏;
  2. 把目标里的路径复制到资源管理器地址栏,看那个 exe 文件是否真的存在;
  3. 如果路径不存在,就手动去 Anaconda 或 Miniconda 的安装目录里找到python.exe,然后用命令行启动;找不到也没关系,直接在开始菜单搜 Anaconda Prompt 打开,在里面敲jupyter notebook就能绕过快捷方式。

还有一种情况是 PATH 环境变量被改了。某些软件安装时会修改 PATH,把 conda 相关的路径删掉或者挪到后面,导致系统找不到jupyter命令。这种情况你直接在 cmd 里输入:

where jupyter

看看能不能输出路径。不能的话,就要去“系统设置 -> 环境变量”里把 Anaconda 的 Scripts 目录加回 PATH。具体路径一般是C:\Users\你的用户名\anaconda3\Scripts。

3.2 “突然打不开了”:端口、缓存、内核三连查

“之前用得好好的,今天突然打不开”,这类问题高频到几乎每周都有人来问我。排查顺序推荐这样走:

第一步,回到启动 Jupyter 的那个命令行窗口,看有没有报错信息。很多误导性的错误在命令行里都有明确输出,比如[Errno 98] Address already in use,就是端口被占用了。

第二步,查 8888 端口占用情况。Windows 上用:

netstat -ano | findstr 8888

macOS/Linux 上用:

lsof -i :8888

看到 PID 之后,杀掉残留进程再重启 Jupyter。这个是 Jupyter 闪退后最常见的坑:因为页面关掉了,但后台 node 或 python 进程没退出,端口还堵着。

第三步,如果命令行窗口没有任何报错,服务也显示在跑,但浏览器就是打不开,那就试试换一个无痕窗口或者换一个浏览器。好多次所谓“启动失败”,其实是浏览器缓存了一个坏掉的页面,或者某个浏览器插件拦截了本地 localhost 请求。

第四步,依旧不行,就要考虑内核崩了。这种时候在命令行里重新安装一次ipykernel往往能救回来:

pip install --upgrade ipykernel

顺带说一个我自己踩过的坑:磁盘空间满了也会导致 Jupyter 打不开。它会在写入缓存或临时文件时失败,症状很像 “Jupyter 没反应”,但其实只是没空间写临时文件了。所以当你排查完上述四个步骤还没解决,顺手看一眼系统盘剩余空间,别问我为什么每次新同事找我排查都要先看这一步。

3.3 网页登录入口和 token 机制

很多刚接触 Jupyter 的人问“网页版登录入口在哪”。其实启动后命令行窗口会输出类似这样一段:

http://localhost:8888/tree?token=9a2f7b5e...

这个http://localhost:8888/tree就是登录入口,后面那段token相当于临时密码。第一次访问时会要求输入 token,没有它进不了页面。

如果你把那个窗口关了,忘了 token 怎么办?不用慌,重新打开终端输入:

jupyter server list

这个命令会列出当前所有运行中的 Jupyter 服务,每个服务对应的 token 也会一并显示。或者更省事一点,直接设置一个固定的登录密码:

jupyter notebook password

设置完成后重启 Jupyter,以后访问只需要输入你设置的密码,再也不用从命令行复制那一长串 token。密码会写入~/.jupyter/jupyter_notebook_config.json,安全性比 token 弱一点,但本机开发完全够用。

4. 让 Notebook 把文件存到你想存的地方:默认目录设置

4.1 先学会临时的--notebook-dir参数

默认情况下 Jupyter 会把文件存放在你启动它的那个目录,也就是终端当前所在的文件夹。很多人每次启动都落在用户主目录,然后在网页里翻了半天找不到自己项目文件夹,干脆就责怪“Jupyter 怎么这么难用”。其实问题只是你没有告诉它工作目录在哪。

不想长期改配置的话,启动时直接指定目录:

jupyter notebook --notebook-dir D:\Projects\Python

macOS/Linux 同理:

jupyter notebook --notebook-dir /Users/yourname/projects

Windows 下注意路径里的反斜杠,要么用双引号包起来,要么直接把反斜杠改成正斜杠。我用 Windows 机器时一般这样写最稳:

jupyter notebook --notebook-dir "D:/Projects/Python"

这种方式的好处是只对当前这次启动生效,适合临时切换目录的场景。

4.2 一劳永逸:修改配置文件

如果你每次打开 Jupyter 都希望它落在同一个目录,那就生成配置文件改一次。

先执行:

jupyter notebook --generate-config

这个命令会在~/.jupyter/目录下生成一个jupyter_notebook_config.py文件。用文本编辑器打开,找到这一行:

# c.NotebookApp.notebook_dir = ''

把它改成:

c.NotebookApp.notebook_dir = 'D:/Projects/Python/Notebook'

注意:我这里特意写了/,Jupyter 在 Windows 下能正确识别正斜杠,还能省掉一堆转义问题。路径里如果含中文,也没问题,只要你的 Python 版本是 3.x,编码默认 UTF-8,不用担心乱码。

保存后重启 Jupyter,你会发现工作目录已经切到新路径了。如果改了配置没生效,别急,先去检查一遍 Jupyter 的配置层级。它的配置读取顺序是:启动目录下的配置文件 > 用户配置 > 系统配置。只要启动目录里没有覆盖用的jupyter_notebook_config.py,正常情况下用户配置是能生效的。

4.3 网页里如何跨目录操作与重命名

有人搜“jupyter 怎么创建在别的文件夹”,其实网页操作逻辑很简单:进入http://localhost:8888/tree文件列表页面后,先在左侧目录树点进想存放文件的目标文件夹,然后再点右上角 New -> Python 3,新建的 Notebook 就会直接落在当前文件夹里。

如果文件已经建错了地方,网页文件列表页支持直接改名和移动。勾选文件后点“重命名”按钮,输入带相对路径的名称就能移动位置。比如你想把根目录下的test.ipynb移到myproject子目录,改名输入myproject/test.ipynb即可。新版 Notebook 也支持鼠标拖拽文件到文件夹里,比旧版舒服不少。

5. 不想开浏览器?把 Jupyter 接进 VSCode

5.1 插件安装与内核选择

很多写 Python 的人离不开 VSCode,Jupyter 和 VSCode 的集成也让不少人直接放弃了浏览器版。操作起来不复杂,核心就两步:

第一步,打开 VSCode 扩展市场,安装两个扩展:Python 和 Jupyter。Python 扩展自带 Notebook 支持,Jupyter 扩展负责连接和运行内核。

第二步,打开一个.ipynb文件,右上角或右下角位置会有“选择内核”的按钮。点它之后,VSCode 会扫描系统里所有可用的 Python 解释器。这里特别提醒:如果你用 conda 建了虚拟环境,一定要在这里选中对应的 conda 环境,否则很可能出现“Jupyter 里 import pandas 失败,但终端明明能 import”这种鬼问题。

5.2 两种工作模式的取舍

VSCode 接 Jupyter 有两种典型用法:

一种是直接编辑.ipynb文件,左上角会出现“单元格”运行按钮,体验和网页版基本一致,但额外有变量查看器、断点调试这些加分项。

另一种是在.py文件里用# %%分隔成代码块,VSCode 会识别出代码块并提供一个“运行单元格”的入口。这种方式特别适合“想把脚本逐渐固化下来”的场景:一开始是探索性代码,后来自然过渡成正式的 Python 模块。

就我个人的使用习惯而言,探索数据、快速验证想法时我还会用网页版;一旦代码量变大、需要调试和 Git 管理,我基本都在 VSCode 里做。因为 VSCode 的调试器可以直接挂在 Jupyter 内核上,在 Notebook 单元格里打断点、看变量、逐行执行,体验比浏览器版强太多。但要注意,VSCode 集成环境偶尔会碰到兼容性问题,比如某些魔术命令(像%matplotlib inline)在 VSCode 里被静默忽略,这时候别死磕,回到浏览器版跑一下很快就能确认是不是环境的问题。

5.3 远程服务器上的 Notebook

再说一个进阶场景:代码跑在远程服务器上,怎么用本地浏览器访问。

基本原理是 SSH 端口转发。本地终端执行:

ssh -L 8888:localhost:8888 your_server

登录远程服务器后启动 Jupyter:

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

然后本地浏览器访问http://localhost:8888就能打开远程的 Jupyter 界面。这种方式比你直接配置“远程端口监听”安全得多,因为 8888 端口只暴露在本机,没有暴露到公网。我见过不少人图省事直接把服务绑到0.0.0.0上,这在没有认证保护的情况下等同于把服务器开了一个门,风险很大,不建议这么干。

6. 那些高频“小毛病”:看起来不大,卡起人来要命

6.1 一个单元格只输出最后一行的结果

这是被问得特别多的问题:一个 Cell 里明明写了好几行输出语句,结果只有最后一行显示出来,前面的 print 结果去哪了?

其实这是 Jupyter 的显示机制造成的。一个 Cell 里如果有多条独立的表达式,Jupyter 默认只把最后一个表达式的值自动显示出来。比如:

5 * 2 3 * 4

运行后只会显示12,前面那个10不会自动展示。但如果你用了print(),情况又不一样了,print()是显式输出,每一条 print 都会老老实实显示在输出区。

所以如果你想让所有结果都显示出来,要么每条都用print()显式打印,要么用 IPython 提供的display()函数:

from IPython.display import display display(5 * 2) display(3 * 4)

这个机制在你要同时展示多个图表的时候特别有用。比如你画了两张图,只写plt.show()它大概率只出最后一张,换成display(fig1)、display(fig2)就能全部显示。这个细节看似不起眼,但使用频率很高。

6.2 复制粘贴多行代码总是报错

代码从网页、PDF、或者别人文档里复制到 Jupyter,经常一粘贴就报IndentationError或SyntaxError。原因在于 Jupyter 对空格和缩进特别敏感,而很多来源的代码里混着看不见的制表符、全角空格,或者粘贴时浏览器自动把缩进吞了。

应对办法很简单:使用 IPython 的%paste魔术命令。先把代码复制到剪贴板,然后在一个 Cell 里输入:

%paste

运行它,会弹出一个粘贴区,把内容粘贴进去按回车,IPython 会自动清理格式并执行。这个方法在处理从 PDF 复制带行号的代码时堪称救星。

另一个场景是复制出来的代码开头带着>>>提示符,这多半是从 Python 交互式命令行里复制的。直接粘贴照样报错,同样可以用%paste清理掉>>>和...前缀。如果你用的是 VSCode 里的 Notebook 模式,%paste可能不生效,那就先把代码贴到文本编辑器里统一清理一遍,再粘进单元格,多花十秒钟,能省下十分钟排查时间。

6.3 文件命名:从 untitled2 到有意义的项目名

新开一个 Notebook,默认名永远是Untitled.ipynb,再开一个就是Untitled2.ipynb,如果建多了,列表里全是 Untitled,时间一长根本分辨不出哪个文件是干嘛的。

这个问题的解法没什么技术含量,但真的很影响效率:养成“新建后立刻重命名”的习惯。点击浏览器左上角的Untitled2文件名,直接输入新名字回车即可。文件名尽量包含日期和主题,比如20250115_数据处理.ipynb,这样一周后回来看文件列表也能秒懂。

另外提醒一个容易搞混的点:你在网页里改的名字,其实就是真实文件名。所以千万别在系统文件管理器里随意改正在使用的.ipynb文件名,否则浏览器里的内核定位会乱,严重的会提示“找不到内核”。要改就回到网页里改,一步到位且安全。

6.4 我常用的几个快捷键和补充技巧

顺手分享几个我每天都在用的快捷键,新手记熟这几个就够了:

快捷键作用
Shift + Enter运行当前单元格并跳转到下一个
Ctrl + Enter运行当前单元格但不跳转
Esc + A / Esc + B在当前单元格上方/下方插入新单元格
Esc + M / Esc + Y把当前单元格切换为 Markdown / 代码模式
Esc + D + D删除当前单元格
Tab自动补全代码
Shift + Tab查看函数签名或文档

还有两个魔术命令我觉得比快捷键还实用。一个是%timeit,可以快速测量一行代码的执行时间,做性能验证的时候特别方便;另一个是%whos,可以列出当前环境里的所有变量及其类型、大小,排查“这个变量什么时候被覆盖了”这类问题非常有效。

最后聊一点个人体会。Jupyter Notebook 的安装难点从来不在“安装”本身,而在环境管理和启动配置。你用 conda 建一个专用环境,哪怕只是 Miniconda,后续能少很多麻烦;启动后先跑一遍jupyter kernelspec list验证内核,能避开一大半“装了打不开”的困惑。再有就是上面提到的那些小毛病——输出只显示最后一行、复制粘贴报错、文件命名混乱——趁着项目规模不大时把使用习惯调整好,后面跑数据分析或机器学习项目时会顺畅得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 22:08:42

企讯通携号转网查询开发者口碑与三网直连实时同步:低门槛接入、稳定性实测与选型清单全解析

在携号转网全面铺开的当下,越来越多企业把"携号转网查询"视为业务系统里不可或缺的一环。他们发现,过去依赖号段判断运营商的老办法渐渐失灵,号码就像一个会搬家的住户——表面还是原来的门牌,实际早已换了房东。在众多…

作者头像 李华
网站建设 2026/9/29 22:07:54

失物招领小程序(DeepSeek 证件识别与认领验证、WebSocket 即时聊天、AI 智能助手、语音消息、ECharts 数据分析、积分兑换、失物与招领信息发布审核)

【毕业设计】失物招领小程序:从信息发布到证件核验,做一套能防冒领的失物招领系统技术栈:uni-app Vue 3 Element Plus Pinia Spring Boot 3.3.1 MyBatis-Plus MySQL JWT DeepSeek WebSocket 百度语音 ECharts 功能关键词&#xff…

作者头像 李华
网站建设 2026/9/29 22:07:54

电脑怎么共享屏幕 怎么共享屏幕给对方

电脑怎么共享屏幕?不少人远程开会、线上教学、异地协作时,试过多款共享工具,经常遇到连接失败、操作卡顿的问题。怎么共享屏幕才能稳定流畅、操作省心?建议使用无界趣连2.0,它针对性优化了屏幕共享功能,无需…

作者头像 李华
网站建设 2026/9/29 22:06:57

职校学工管理系统选型指南 兼顾功能实用与性能稳定

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2026/9/29 22:05:40

在线纹波滤波电容计算器:按纹波电流和频率算出该配多大电容

给电源做滤波时,选电容这件事经常卡住我:手册只写了纹波电流和开关频率,要配多大的电容得自己反推;换个电路拓扑(整流、Buck、正弦纹波),公式里的系数又不一样,每次都要翻笔记核对。…

作者头像 李华