【Ubuntu系统开发工具使用技能】使用VS Code的远程Python交互式jupyter notebook窗口与数据可视化案例。当启动 Jupyter Notebook 时,如果提示需要输入 Password or Token ,可以通过以下方法解决:
一、Python交互式jupyter notebook窗口
1. 启动时查看 Token
当你运行以下命令启动 Jupyter Notebook 时:
jupyter notebook --ip=0.0.0.0 --no-browser --port=8888终端会显示类似以下的信息:http://<ip>:8888/?token=abcdef1234567890abcdef1234567890abcdef1234567890
找到
token
值,复制该值并在浏览器中访问,例如:
http://<ip>:8888/?token=abcdef1234567890abcdef1234567890abcdef1234567890
2. 禁用 Token 验证
如果不想每次都输入 Token,可以通过以下方法禁用:
- 生成配置文件 (如果没有配置文件):
jupyter notebook --generate-config
配置文件通常位于:~/.jupyter/jupyter_notebook_config.py
。
编辑配置文件 :
使用文本编辑器打开配置文件,例如:
nano ~/.jupyter/jupyter_notebook_config.py
修改以下内容:
c.NotebookApp.token = '' # 设置为空字符串,禁用 Token
c.NotebookApp.password = '' # 如果没有设置密码,也可以清空
保存并重启 Jupyter :
重新启动 Jupyter Notebook,不再需要输入 Token。
3. 设置固定密码
如果不想禁用验证,但又希望使用固定密码,可以按照以下步骤设置密码:
生成加密密码 :
在终端中运行以下命令:
from notebook.auth import passwd
passwd()
输入你想要设置的密码,得到类似以下加密字符串:
sha1:1234567890abcdef1234:abcdef1234567890abcdef1234567890abcdef12
编辑配置文件 :
在 ~/.jupyter/jupyter_notebook_config.py
中,设置如下内容:
c.NotebookApp.password = 'sha1:1234567890abcdef1234:abcdef1234567890abcdef1234567890abcdef12'
c.NotebookApp.token = '' # 可选,清空 Token
重启 Jupyter :
现在,你可以使用设置的固定密码访问 Notebook。
4. 通过 SSH 隧道避免直接访问
为了安全起见,推荐通过 SSH 隧道进行访问,不需要在公网暴露端口:
ssh -L 8888:localhost:8888 <user>@<remote_ip>
然后在本地浏览器中访问:
http://localhost:8888
选择设置固定密码或者 禁用 Token 验证 ,可以简化访问流程,同时确保安全性。
二、在 Jupyter Notebook 中遇到 Permission denied
问题解决
在 Jupyter Notebook 中遇到 Permission denied
的问题通常是因为用户在无法写入的目录中创建文件。以下是可能的原因及解决方法:
1. 检查 Jupyter 启动目录的权限
Jupyter 默认在启动时使用当前的工作目录作为根目录。如果该目录对当前用户没有写权限,就会报错。
解决方法 :
确认 Jupyter 的启动目录:
pwd
检查该目录的权限:
ls -ld .
确保当前用户对该目录有写权限。如果没有权限,修改权限:
sudo chmod u+w /path/to/directory
或者,启动 Jupyter 时指定一个有写权限的目录:
jupyter notebook --notebook-dir=/path/to/writable/directory
2. 更改 Jupyter 的默认工作目录
如果频繁需要更改目录,可以直接设置 Jupyter 的默认工作目录:
- 打开 Jupyter 配置文件:
nano ~/.jupyter/jupyter_notebook_config.py - 修改以下配置,设置一个有写权限的路径:
c.NotebookApp.notebook_dir = '/path/to/writable/directory'
3. 检查系统权限和用户身份【该方法有效】
- 如果使用的是远程服务器,确认运行 Jupyter 的用户有足够权限。
- 如果是通过
sudo
启动的 Jupyter Notebook,可能是权限问题导致无法写入。
解决方法 :
- 确保用普通用户启动 Jupyter:
jupyter notebook
如果需要运行在特定路径且当前用户没有权限,赋予该用户写权限:
sudo chown -R <username>:<groupname> /path/to/directory
或赋予所有用户写权限:
sudo chmod -R 777 /path/to/directory
4. 检查具体目录的权限
在报错路径 translation/Untitled.ipynb
中:
- 确保
translation
目录存在并具有写权限:
mkdir -p translation
chmod u+w translation
5. 使用合适的文件系统
如果运行环境使用了外部挂载(如 NFS、Docker volume),可能出现写权限问题。
解决方法 :
- 确保挂载时带有写权限参数,例如:
mount -o rw /dev/sdX /path/to/mount
按照以上方法,重点检查和调整 Jupyter 的工作目录及路径权限,应该能解决问题。
三、数据可视化
下面是一个简单的 Python 可视化案例,使用 matplotlib
和 seaborn
库来生成一个数据集的可视化图表。这个例子将展示如何用 Python 创建一个线图、柱状图以及分布图。
安装必要的库
首先,确保你安装了 matplotlib
和 seaborn
库。如果没有安装,可以通过以下命令安装:
pip install matplotlib seaborn
Python 可视化案例:线图、柱状图和分布图
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
# 创建一些样本数据
np.random.seed(0)
data = pd.DataFrame({
'x': np.linspace(0, 10, 100),
'y': np.sin(np.linspace(0, 10, 100)) + np.random.normal(0, 0.2, 100), # 正弦波加上噪声
'category': np.random.choice(['A', 'B', 'C'], 100)
})
# 设置 Seaborn 样式
sns.set(style="darkgrid")
# 1. 线图 (Line plot)
plt.figure(figsize=(10, 6))
sns.lineplot(data=data, x='x', y='y', label='Sine wave with noise')
plt.title('Line Plot of Sine Wave with Noise')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.show()
# 2. 柱状图 (Bar plot)
plt.figure(figsize=(10, 6))
sns.barplot(x='category', y='y', data=data, ci=None) # 不显示置信区间
plt.title('Bar Plot by Category')
plt.xlabel('Category')
plt.ylabel('Y')
plt.show()
# 3. 分布图 (Distribution plot)
plt.figure(figsize=(10, 6))
sns.histplot(data['y'], kde=True, bins=20) # KDE:核密度估计
plt.title('Distribution Plot with KDE')
plt.xlabel('Y')
plt.ylabel('Frequency')
plt.show()
说明:
- 线图 (
sns.lineplot
): 绘制x
和y
之间的关系,表示一个带有噪声的正弦波。 - 柱状图 (
sns.barplot
): 按类别(‘A’, ‘B’, ‘C’)绘制y
的均值。 - 分布图 (
sns.histplot
): 显示y
的频率分布,并通过 KDE 曲线表示数据的估计密度。
输出图示:
- 线图 :展示了带噪声的正弦波,x 轴表示时间或其他变量,y 轴表示相应的值。
- 柱状图 :按不同类别展示数据的平均值,比较各类别的差异。
- 分布图 :显示数据的频率分布,并通过平滑的曲线估计数据的概率分布。