惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
A
About on SuperTechFans
量子位
Engineering at Meta
Engineering at Meta
B
Blog
The Cloudflare Blog
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Y
Y Combinator Blog
J
Java Code Geeks
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
T
Tailwind CSS Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
在同一个文档里Markdown写作+运行代码:Jupyter Notebook入门...
2022-02-19 · via 少数派

Jupyter Notebook 是一个开源的、基于网页的应用,它可以创建一个文档,在这个文档里,我们不但可以使用 Markdown 语法来输入文本,插入图片,还可以运行多种编程语言代码,并直接在文档里查看代码运行结果。就像这样:

因此,Jupyter Notebook 可以让我们随时输出并查看代码的运行结果,并辅之以文字和图片说明,最终实现将代码、结果、图片、文字集中在一个文档呈现的效果,它非常适合用于撰写和分享编程项目文档、编程学习笔记和教程等等。举个例子,机器学习框架 tensorflow 官网的案例、和鲸社区、等均采用了 Jupyter Notebook 或基于 Jupyter Notebook 进行二次开发来作为其在线展示或学习的平台。

Jupyter Notebook 虽然支持多种编程语言的运行,但它的安装和使用却需要依赖 Python 环境。Jupyter 官网的入门教程推荐新手使用 Anaconda 来使用 Jupyter Notebook。Anaconda 是一个预先安装了 Python、Jupyter Notebook,面向数据分析的开发平台。目前网上一些介绍 Jupyter Notebook 使用和配置的帖子也是在 Anaconda 上进行操作的。但我现在已经不喜欢过分依赖这些集合了众多包和模块、一键操作的IDE和平台了。自己一砖一瓦搭建的开发环境,会更加轻便和适合自己。

其实,在终端中使用 Python 包管理工具和一些简单的指令,就可以从容配置和使用 Jupyter Notebook了。来看看怎么实现吧。

本文会涉及到 Python 虚拟环境的使用,可戳我此前的 帖子

我们在终端中使用 pip 来安装 Jupyter Notebook,这样 Jupyter Notebook 将会被安装到本机原生的Python 环境中:

python -m pip install notebook

我们也可以在某一个虚拟环境中安装 Jupyter Notebook。考虑到在虚拟环境中安装和使用 Jupyter Notebook 的操作可以轻松推广到在原生环境中的操作,反之则不易,因此本文会介绍在虚拟环境中 Jupyter Notebook 的操作,这样可以兼顾想在虚拟环境和原生环境中使用 Jupyter Notebook的读者。

我们使用虚拟环境 A 中的 pip 来安装 Jupyter Notebook:

D:\...\venvA\Scripts\python -m pip install notebook

安装完成后,在终端进入虚拟环境 A ,执行以下指令即可打开 Jupyter Notebook :

D:\...\venvA\Scripts\activate.ps1
jupyter notebook

此时,终端会打印 Jupyter Notebook 的相关信息:

同时浏览器启动,打开 Jupyter Notebook 的主页 Home page。正如所见,Jupyter Notebook 便是这么一个基于网页的应用程序,不过它读写的是本机的文件。细看 Home Page ,这其实就是本机 C:\Users\<user name> 目录。我们新建的笔记也会保存在这个目录下。

我们可以根据自己的使用习惯将 Jupyter Notebook 的 Home Page 修改为自定义的目录,这样更有条理,也便于我们按照自己的习惯来管理。如何修改呢?

我们回到终端,在虚拟环境中执行指令,生成一个 Jupyter Notebook 的默认配置文件:

jupyter notebook --generate-config

此时终端会提示:

Writing default config to: C:\Users\<user name>\.jupyter\jupyter_notebook_config.py

现在来到C:\Users\<user name>\.jupyter\目录,就可以看到刚生成的 jupyter_notebook_config.py 文件,这是 Jupyter Notebook 的配置文件,可以用文本编辑软件打开,通过修改其中的内容,就可以实现对 Jupyter Notebook 设置的修改。

这里我用 VS code 打开,然后查找关键词c.NotebookApp.notebook_dir来到此语句位置。这个语句便是定义 Home Page 所在目录的。目前,语句前带有注释 # 号,因此未生效。

取消前方的注释 # 号来使此语句生效,并在 ‘ ’中输入新的目录来作为 Jupyter Notebook 的 Home page:

c.NotebookApp.notebook_dir = ‘D:\jupyterNotebook’

保存,关闭。

重新运行 Jupyter Notebook,可以看到此时 Home Page 已变成我们所设置的目录了,由于新目录中无任何文件夹或文件,故显示「笔记本列表为空」。

点击右上角「new」,在下拉菜单中选择一个 Python 开发环境,即可新建一个笔记。

在笔记里,可以使用 markdown 语法来输入文本,也可以输入 Python 代码并运行,直接查看运行结果。此笔记所用的 Python 环境即为我们新建笔记时所选择的 Python 环境。在这个例子中,笔记所调用的是 Jupyter Notebook 所在的虚拟环境。

现在,我们就拥有了一个可以运行 Python 代码的笔记本了。

Jupyter Notebook 调用其他虚拟环境

按照本公众号的开发习惯,我们会为不同 Python 项目配置了各自独立的虚拟环境,这些虚拟环境中所安装的包各有不同。那么,我们安装在虚拟环境 A 中的 Jupyter Notebook 能否调用虚拟环境 B 来执行笔记中的代码呢?答案是肯定的,但是我们需要进行一些配置工作。

我们暂时离开 Jupyter Notebook,在终端中,命令虚拟环境 B 安装 ipykernel 内核:

 D:\...\venvB\Scripts\python -m pip install ipykernel

ipykernel,顾名思义,是一个「内核」。作为初学者,我们只需要知道,它可以让我们的虚拟环境被 Jupyter Notebook 调用。

安装完成后,命令虚拟环境 B 中的 Python 执行指令:

D:\...\venvB\Scripts\python -m ipykernel install --user --name deepLearningVenv --display-name "Python(DeepLearning)

这个指令可以向 Jupyter Notebook 添加虚拟环境 B 。其中「 --name」后的名称为虚拟环境 B 的名称,而「--display -name」后的名称则是显示在 Jupyter Notebook 新建笔记时下拉列表中的名称,可助我们区分不同的虚拟环境,这里我们将「display name」定为「Python(DeepLearning)」,以提示这是一个用于开发深度学习项目的环境。

完成后,终端会提示:

Installed kernelspec deepLearningVenv in C:\Users\<user name>\AppData\Roaming\jupyter\kernels\deeplearningvenv

现在重新进入 Jupyter Notebook,右上角新建一个笔记,可以看到,可选的 Python 环境列表中多了我们刚刚添加的虚拟环境 B ,其显示的名称为 「Python(DeepLearning)」。

当然,也可以将某一个虚拟环境从 Jupyter Notebook 的列表中删除。

我们在终端中进入 Jupyter Notebook 所在的虚拟环境,执行以下指令就可以查看 Jupyter Notebook 所添加的虚拟环境 kernel 的列表:

jupyter kernelspec list

然后执行以下指令就可以删除指定的 kernel:

jupyter kernelspec uninstall kernelsName

重新运行 Jupyter Notebook,就可以看到所操作的虚拟环境已经从新建 Notebook 下拉列表中被移除了。

在 VS code 中使用 Jupyter Notebook

VS code ( Visual Studio Code,一个轻量 IDE) 目前已经支持 Jupyter Notebook。我们可以在 VS code 中来使用 Jupyter Notebook,这似乎比在网页上使用来得更加顺手一些。

我们在 VS code 左侧的「Extensions 拓展」中,搜索并安装 Jupyter 插件,请认准 Microsoft 出品。

安装完成后重启 VS code,选择 「 View > Command Palette...」,或者使用快捷键 ctrl+shift+P,在弹出的命令面板中输入「Jupyter」,在弹出的命令列表中选择「Juypter: Create New Jupyter Notebook」。

这样就成功在 VS code 中新建了一个 .jpynb 格式的笔记本。就如在网页中一样,我们可以插入「Code 」 片段来运行 Python 代码;也可以插入「Markdown」片段来输入文字;在右上角可以选择和切换笔记本所使用的 Python 环境。

到目前为止,我们只在 VS code 中安装了 Jupyter 拓展,就顺利地用起 Jupyter Notebook了,并没有类似「调用本机安装的 Jupyter Notebook」的操作,这似乎太简单了一些?我不禁好奇:

是不是电脑上并不需要安装 Jupyter Notebook,而仅仅在 VS code 安装 Jupyter 插件,也可以使用呢?

为此,我做了一个小实验:我在一台从未配置过 Python 相关开发环境的旧电脑上,安装了 Python 3.7.9 和 VS code,并在 VS code 中安装了 Python 拓展和 Jupyter 拓展,电脑全程没有安装 Jupyter Notebook。

我按照上述方法,在 VS code 中新建了一个 .jpynb 格式的笔记本,在其中输入了Python代码,点击运行,此时VS code弹出提示:「Python 3.7.9 64-bit 需要安装ipykernel。」

现在答案揭晓了,我们想在 VS code 中使用 Jupyter Notebook,并不一定要在电脑上安装「完整」的 Jupyter Notebook,但需要在所使用的开发环境中安装 ipykernel 内核。

点击「安装」,VS code开始下载安装 ipykernel 内核以及相关的依赖。安装完成后,再次运行笔记本中的代码,成功运行。

事实上,这与上文我们在虚拟环境中安装 ipykernel 内核来将该环境添加到 Jupyter Notebook 的操作的本质是相同的。

尾声

面向初学者的 Jupyter Notebook 安装和使用介绍到这里便结束了。文中所涉及的内容,相信已经足够帮助一名初学者顺利安装 Jupyter Notebook 并开始使用。在使用中遇到的困难以及更加进阶的玩法,请多多利用网上资源进行探索,CSDN、知乎、简书都有不少相关帖子,也可以关注微信公众号「南贝塔」,与我讨论。

「好记性不如烂笔头」,我们在编程开发中也需要多记笔记,便于日后翻阅查看。Jupyter Notebook 这样一个可以同时集合文本、图片、代码、运行结果的「笔记本」,针不戳,大家可善加利用。