Jupyter 是一个基于 Web 的交互式计算平台,使用户能够创建和共享文档,这些文档包含实时代码、方程式、可视化图表和解释文字。Jupyter 在数据分析领域被广泛应用,它提供了一个直观、交互式的操作界面,使得用户能够更容易地探索数据、可视化数据以及进行数据处理和建模的实验。 Jupyter 不仅能够对 Python 代码进行展示和格式化,还能够保存用户的历史代码和结果以及数据分析结果。这些结果可以在后期随时查看和修改,使得 Python 的学习和应用变得更加方便和高效。 总之,学习一下jupyter还是非常必要的,也非常的方便,本文的操作主要针对Windows系统。
安装是非常简单的,一般有两种方式,一种就是python环境,另外一种就是Anaconda环境;
安装 Python。从 Python 官方网站[1]下载最新版本的 Python。
安装 pip。pip 是 Python 的包管理工具,用于安装和管理 Python 包。在命令行输入以下命令来检查 pip 是否已经安装:
pip --version
如果 pip 已经安装则会输出 pip 的版本信息,否则需要手动安装。
安装 Jupyter Notebook。使用 pip 命令来安装 Jupyter Notebook。在命令提示符或终端窗口中输入以下命令:
pip install jupyter
等待一段时间,Jupyter Notebook 就会被安装到你的电脑上了。
启动 Jupyter Notebook。安装完成后,在命令提示符或终端窗口中输入以下命令来启动 Jupyter Notebook :
jupyter notebook
这个命令会自动打开你的默认浏览器,展示 Jupyter Notebook 的主页,并在后台启动一个 Jupyter 内核(Kernel)。
正常的话,安装Anaconda的时候,jupyter是伴随anaconda安装好的,不需要按照如下步骤再去安装;
安装 Anaconda。从 Anaconda 官方网站[3]下载最新版本的 Anaconda。
启动 Anaconda Navigator。安装完毕后,启动 Anaconda Navigator,它是一个可视化的应用程序,方便用户管理和运行 Anaconda 中包含的各种工具和应用。
安装 Jupyter Notebook。在 Anaconda Navigator 中,点击左侧导航栏的 “Environments”,然后在右边的区域中选中需要安装 Jupyter Notebook 的环境,在下方的 “Packages” 标签页中搜索 “jupyter”,并勾选 “jupyter” 和 “notebook”。然后点击 “Apply” 按钮进行安装即可。
启动 Jupyter Notebook。安装完成后,在 Anaconda Navigator 中点击 “Launch” 按钮启动 Jupyter Notebook,也可以在命令提示符或终端窗口中输入以下命令来启动:
jupyter notebook
默认端口启动
jupyter notebook
浏览器地址栏中默认地将会显示:http://localhost:8888/tree。其中,“localhost”指的是本机,“8888”则是端口号,每多启动一次,端口号类推
指定端口启动
jupyter notebook --port <port_number>
指定端口号只有数字,不含 <>
启动服务器但不打开浏览器
jupyter notebook --no-browser
终端会显示出打开浏览器的链接,若需启动浏览器,复制链接打开即可
Jupyter Notebook 的启动目录是指 Jupyter Notebook 执行服务时的默认工作目录。当你在 Jupyter Notebook 中新建一个文件时,默认情况下会在该目录下创建文件。 设置 Jupyter Notebook 的启动目录非常有用,尤其是在你的工程有大量分散在不同目录中的数据或代码时。通过将启动目录设置为你的工程根目录,你就可以更轻松的管理和访问这些数据或代码了。 例如,假设你有一个名为 “my_project” 的项目,其中包含多个子目录和数据文件。如果你将 Jupyter Notebook 的启动目录设置为 “my_project” 目录,那么你就可以很方便地访问这个项目中的任何文件,而无需在 Jupyter Notebook 中输入完整路径。 另外,在 Jupyter Notebook 里,你可以使用一些 Python 库来处理和可视化你的数据。如果你使用的是相对路径来访问数据文件,那么使用相对于启动目录的路径通常会比使用绝对路径更方便。 jupyter默认文件都放在用户目录下,如下图,启动的时候就可以看到启动目录;进入jupyter也确实是这个目录下的内容;显然这是有问题的,所以需要我们更改文件的存放位置;
新建一个目标文件夹
在你想放这些文件的位置新建一个目录,比如我的目录是:D:\Coding\Jupyter_PyProject
查看配置文件路径
命令窗口输入这行命令,或者在你对应的python环境下的命令窗口输入这行命令,即可查看默认的配置文件位置;但是这条命令虽然可以用于查看配置文件所在的路径,但主要用途是是否将这个路径下的配置文件替换为默认配置文件(相当于重置)
jupyter notebook --generate-config
修改配置文件
上面找到了配置文件的位置,现在我们只需要打开这个文件,然后编辑即可;windows比较方便,利用记事本打开可以打开,但是可能找目标代码就有点麻烦了,这里使用notepad++打开;直接Ctrl+F搜索关键字c.NotebookApp.notebook_dir
,就可以找到目标代码行了;
找到这行代码后,取消注释,并在单引号内写上事先建好的用来存放文件的目录地址,保存退出;
重新启动jupyter验证配置情况;
可以看到这里已经修改成功了;
这里有个坑
这里要强调一下通过命令打开和通过anaconda安装的时候提供的快捷方式打开,因为这里有坑,当你安装完Anaconda的时候,你会发现利用命令和快捷方式都能打开一个jupyter,这俩打开方式是不一样的,比如修改好了jupyter的启动目录,但是在使用快捷方式打开后,启动目录还是默认的目录;具体的差别请查看下面的Q&A部分;
安装
利用pip安装主题扩展
pip install jupyterthemes
加载可用的主题列表
jt -l
应用某个主题
这里的主题名称就是上面主题列表中的主题名,如果命令报错,看下面的解决办法;
jt -t 主题名称
高级的配置
jt -t 主题名称 -f 字体名称 -fs 字体大小 -cellw 代码单元格宽度 -T 工具栏 -N 笔记本名称
详细内容参看官网:https://github.com/dunovank/jupyter-themes
还原默认主题
jt -r
jt命令不可用解决办法
安装jupyter themes之后,运行jt命令,报错如下
jt : 无法将“jt”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再
试一次。
所在位置 行:1 字符: 1
+ jt -l
+ ~~
+ CategoryInfo : ObjectNotFound: (jt:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
解决办法就是配置一下环境变量,打开环境变量——点击系统变量——点击PATH——新建;
当然这里的路径要和你的本地环境一致;
如果不知道路径的话,可以打开命令窗口;切换到你安装jupyter themes
的环境下(你没有安装多个虚拟环境,或者你jupyter就安装在默认的环境下,就不用管),运行pip show jupyterthemes
;
最后不要定位到site-packages
目录,要定位到Scripts
目录;
nb_conda
是一个 Jupyter Notebook 的插件,它可以在 Notebook 中实现 Conda 环境和包的访问。在 Jupyter 的文件浏览器中,nb_conda
扩展会添加一个 Conda 选项卡,点击该选项卡即可查看已存在的 Conda 环境列表。通过nb_conda
,用户可以轻松地在 Notebook 中创建、使用和分享自己的 Conda 环境。
安装
conda install nb_conda
卸载
canda remove nb_conda
扩展库一般涉及两个东西,一个就是
jupyter_nbextensions_configurator
,另一个是jupyter_contrib_nbextensions
;jupyter_nbextensions_configurator
是一个用于管理和配置 Jupyter Notebook 的笔记本扩展程序的 GUI 工具。它提供了图形用户界面(GUI)来启用、禁用和配置 Jupyter Notebook 的 nbextensions 扩展程序。它还允许你使用预定义选项来配置这些扩展程序,使其更加符合你的需求。此外,它还提供了一些主题以改变笔记本的样式和交互体验。jupyter_contrib_nbextensions
则是一组可用于增强 Jupyter Notebooks 功能的扩展程序集合。这些扩展包含多种类型的实用工具,如代码折叠、高亮显示、表格排序、导航栏等等。通过安装 jupyter_contrib_nbextensions,你可以更方便地管理你的笔记本,提高编程效率。需要注意的是,jupyter_contrib_nbextensions 中包括了 nbextensions_configurator 工具。
pip安装
pip install jupyter_contrib_nbextensions
jupyter contrib nbextensions install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
conda安装
conda install -c conda-forge jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
conda install -c conda-forge jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
安装后发现扩展库里面只有四五个
把扩展库卸载了重新装一遍就行了,建议一行一行的跑命令; pip卸载 pip uninstall jupyter_contrib_nbextensions anaconda卸载 conda remove jupyter_nbextensions_configurator
安装之后,启动jupyter就能看到nbextensions了,要取消图中的选择,才能使用;使用即在对应的扩展前面选中即可;
Table of Contents
: 自动生成文档中的目录,方便快速导航和查找内容。[1]
Collapsible Headings
: 折叠和展开单元格标题,节省页面空间并使整个文档更易于导航。[2]
Code Folding
: 可以折叠代码单元格中的代码块,有助于隐藏不必要的细节并提高可读性。 [3]
ExecuteTime
: 显示代码单元格的执行时间。[4]
Notify
: 当代码执行完成时向浏览器推送通知。[5]
部分内容及图片来源:https://cloud.tencent.com/developer/article/2135662
先摆上两个链接,更多详细的内容参看:
Jupyter Notebook笔记本的两种模式
删除单元格快捷方式:进入命令模式后双击D键
恢复单元格:进入命令模式后按Z键
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
加载指定位置源代码
想要在Jupyter Notebook中直接加载指定位置的源代码到笔记本中;
输入以下命令运行即可加载,运行完之后,代码会加载到单元格内,该命令会被注释;
%load URL
更多魔术命令
上面就是魔术命令的一个应用,其他的还有类似获取当前文件位置的命令等等,更多内容参考官网:https://ipython.readthedocs.io/en/stable/interactive/magics.html
#!/usr/bin/env python
# coding: utf-8
# In[1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# In[2]:
# 创建测试数据
df = pd.DataFrame({
'year': [2016, 2017, 2018, 2019, 2020],
'sales': [100, 130, 150, 170, 200]
})
# In[3]:
# 绘制柱状图
plt.bar(df['year'], df['sales'], color='blue')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales over Year')
plt.show()
# In[ ]:
三个单元格分别导入包、创建测试数据、绘图; 运行需要严格按顺序执行;
#!/usr/bin/env python
# coding: utf-8
# In[7]:
import requests
from bs4 import BeautifulSoup
import time
# In[18]:
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
'Cookie':'SUB=_2AkMTf37Hf8NxqwJRmPAVyG7jbol0wwrEieKlI48cJRMxHRl-yT9vqlYOtRB6OP9QKBlDDjMdGlMFok5NIqGTLxEXHcGr; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9W5UiecUPRV2SWjRzBIq2X0V; SINAGLOBAL=618205954960.4446.1681196722663; UOR=www.baidu.com,weibo.com,tophub.today; _s_tentry=-; Apache=5834475057987.334.1682445226156; ULV=1682445226181:3:3:1:5834475057987.334.1682445226156:1681202990452; XSRF-TOKEN=WKel-EKSczosZuoOMXKVIH9H; WBPSESS=durPiJxsbzq5XDaI2wW0N0pbOd3fbV1w3XF-VOcj7XTJ8vDiYa5jmFydo3U2yLd3wSJp3fMJK1n5h3EzWFi1ruvJTHRYOs9aoG4rZ64JjMz9qH5LbEnhw5Cxomz5i-gj'
}
url = 'https://s.weibo.com/top/summary'
# In[19]:
try:
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
if response.status_code == 200:
print(response.text)
else:
print(f'Request failed with status code {response.status_code}')
except RequestException as e:
print(e)
# In[20]:
response_html = response.text
# In[21]:
soup = BeautifulSoup(response_html, 'lxml')
# In[22]:
hot_list = []
# In[23]:
items = soup.select('tbody > tr')
# In[31]:
for item in items:
hot_title = item.select_one('.td-02 > a').get_text(strip=True)
hot_url = 'https://s.weibo.com' + item.select_one('.td-02 > a')['href']
hot_item = {
'hot_title': hot_title,
'hot_url': hot_url
}
hot_list.append(hot_item)
# In[43]:
for i in range(len(hot_list)):
if i<10:
print(i+1,hot_list[i]["hot_title"])
具体思路是,使用requests库向新浪微博实时热搜的页面发送请求,并通过BeautifulSoup库解析返回的html内容。然后遍历html中的各个元素,提取出热搜话题的标题和链接,最后将其存储到hot_list数组中。最后再遍历一次hot_list数组,输出前十个热搜话题。 需要注意的是,这段代码访问新浪微博网站时设置了请求头和Cookie,防止因缺失必要参数而无法请求到数据。同时,由于网站的内容可能随时发生变化或者有反爬虫机制的存在,因此需要在爬取时进行一定的容错处理,确保程序运行的稳定性。
具体这里的坑就是,明明已经修改过Jupyter的启动目录了,但是通过Anaconda安装的jupyter快捷方式打开的时候,打开的启动目录还是默认的目录,但是使用命令打开的时候,启动目录已经修改成功了; 为什么? 在 Windows 上,可以通过两种方式运行 Jupyter Notebook:
这两种方式的区别在于,通过 Anaconda 命令行打开 Jupyter Notebook 时,启动的是 Anaconda 中当前激活的环境下安装的 Jupyter Notebook;而通过桌面快捷方式打开 Jupyter Notebook 时,启动的是指定环境下 Anaconda 中安装的 Jupyter Notebook。 为了更好地理解这个问题,以下是各个文件路径的具体解释:
C:\Anaconda3\python.exe
是 Anaconda 配备的 Python 解释器执行文件的路径。C:\Anaconda3\cwp.py
是一个用于改变当前工作路径到指定路径的脚本文件。C:\Anaconda3\envs\env_name
是指向指定环境的路径。C:\Anaconda3\Scripts\jupyter-notebook-script.py
是用于启动 Jupyter Notebook 的 Python 脚本文件。%USERPROFILE%
是指向当前用户主目录的路径。通过命令行进入到 Anaconda Prompt 界面后(或者直接使用 PowerShell/CMD),输入 “jupyter-notebook” 命令,系统会自动在当前激活的 Anaconda 环境下寻找 Jupyter Notebook,并启动它。所以在这种情况下,无需使用 cwp.py 脚本文件、env_name 环境路径和 jupyter-notebook-script.py 路径来指定环境和启动脚本。 但是,如果你想从桌面上的快捷方式来启动 Jupyter Notebook,就需要指明你想运行哪个环境中的 Jupyter Notebook。为了做到这一点,快捷方式需要知道:
C:\Anaconda3\python.exe
);C:\Anaconda3\cwp.py
);C:\Anaconda3\envs\env_name
);C:\Anaconda3\Scripts\jupyter-notebook-script.py
);%USERPROFILE%
)。 因此,在使用桌面快捷方式启动 Jupyter Notebook 时,快捷方式实际上是通过执行如下命令来打开它的:
C:\Anaconda3\python.exe C:\Anaconda3\cwp.py C:\Anaconda3\envs\env_name C:\Anaconda3\Scripts\jupyter-notebook-script.py %USERPROFILE%
这会激活指定环境,并在该环境下启动 Jupyter Notebook 执行服务。
例如,博主的路径如下,这里D:\Coding\Anaconda3
就是默认的python环境;
D:\Coding\Anaconda3\python.exe D:\Coding\Anaconda3\cwp.py D:\Coding\Anaconda3 D:\Coding\Anaconda3\python.exe D:\Coding\Anaconda3\Scripts\jupyter-notebook-script.py "%USERPROFILE%/"
如何修改通过快捷方式打开的Jupyter的启动目录?
打开快捷方式文件夹,右键单击要修改的快捷方式图标,并选择 “属性”。
在 “快捷方式” 选项卡下,找到 “目标” 字段,目标内的命令如下,%USERPROFILE%
有没有双引号包含都不影响;
C:\Anaconda3\python.exe C:\Anaconda3\cwp.py C:\Anaconda3\envs\env_name C:\Anaconda3\Scripts\jupyter-notebook-script.py %USERPROFILE%
将%USERPROFILE%
完全替换为你设定的启动目录的路径,引号不影响。
点击 “应用” 按钮保存修改,并退出 “属性” 窗口就大功告成了。
网上界面汉化的教程一大堆,什么改配置文件、新增用户变量、启动命令后面加
--NotebookApp.locale=zh_CN
指定语言环境,试过都没有效果,不过也不知道是不是我电脑环境的问题,这个没有排除… 但是好像安装扩展库就可以,不过这个也有待确认,琢磨了很久,没琢磨明白,全是坑… 知道的网友可以留言告诉我一下具体咋汉化…
Jupyter适用场景: 数据处理与分析:
IDE适用场景: 项目开发:
Jupyter Notebook 适合的项目
IDE 适合的项目
伴随这个问题有一个报错,就是启动jupyter notebook后,命令窗口报错
404 GET /static/components/marked/lib/marked.js
解决办法: 来到python安装目录:Lib\site-packages\nbclassic\static\components\marked\lib\
找到marked.umd.js,直接复制并重命名marked.js,重启jupyter notebook。
可以使用。 在 Jupyter 中,如果一个单元格中导入了某个 Python 包,那么下一个单元格是可以直接使用该包的。这是因为在 Jupyter 中,所有单元格都运行在同一个 Python 内核中,所以它们之间可以共享变量、函数和模块等资源。 需要注意的是,如果您在导入模块时发生了错误,比如因为模块不存在或者路径设置不正确等原因,后续的单元格也会受到影响。此外,如果您使用了一些需要进行初始化的模块,比如 TensorFlow 或者 PyTorch 等深度学习框架,建议您在每个单元格开头手动进行初始化操作,以避免出现意外的错误。 如果您遇到了模块无法被正确导入的问题,可以尝试在单元格中手动添加 sys.path,将需要导入的模块所在的路径加入到 sys.path 中。例如: import sys sys.path.append('/path/to/module/') # 将模块所在的路径添加到 sys.path 中 import module_name # 导入模块
在Jupyter Notebook中,单元格是最基本的单位,用户可以在其中编写代码、插入文本、图像、表格等内容,每个单元格可以看作是一个独立的小程序。这些单元格之间存在着以下几种关系: