为了学习Python熬夜部署了Jupyter Notebook 6.x

文章目录

怎么说,今天在学习Python的时候,遇到一段代码,想要运行一下,但是我的15款mbp的风扇已经不允许我在打开任何ide了,所以想着在服务器上面启一个jupyter的服务,在网页上面运行Python的代码。

说干就干。

这里我依然使用docker来实现, 通过拉取镜像,然后运行;后面的话像一下其他的python项目也可以一起放到这个容器里面。

Docker拉取并构建容器

拉取python镜像

shell 复制代码
# 这里需要注意,如果使用的是3.7的版本,那么notebook的版本会在7以下
# 因为notebook 7+ 有许多调整,当前文章还是以 jupyter notebook 6.5.2 编写
docker pull python:3.7

运行容器

shell 复制代码
docker run --name python3 -p 8000:8000 -v /home/dengcong/project/jupyter:/home/dengcong/project/jupyter -itd python:3.7

然后进入到容器里面

shell 复制代码
docker exec -it python3 /bin/bash

安装部署jupyter

我们开始安装部署jupyter,后面的操作都是在容器里面。

1、安装jupyter服务所以来的包

shell 复制代码
pip3 install jupyter -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

2、生成jupyter的配置文件,生成的文件默认路径如下:

shell 复制代码
root@f8996f298763:/# jupyter notebook --generate-config --allow-root
Writing default config to: /root/.jupyter/jupyter_notebook_config.py  // 配置文件存放路径

3、设置jupyter的密码,不设置的话,也可以在第一次访问的时候设置

shell 复制代码
jupyter notebook password

4、修改jupyter的配置文件

新拉取的镜像多半是没有安装vi或者是vim的,可以根据操作系统安装,也可以用sed命令来进行替换操作,(果然服务器上面可以没有vim,但是不能没有linux 三剑客, grep、sed、awk)。

shell 复制代码
// 容器在执行下面两条语句之前的大小是265MB, 执行之后的大小为332MB
// 增加的大小还是能接受,毕竟用的是最low的服务器,需要扣一些细节
apt update
apt install vim -y

用vim打开jupyter的配置文件,修改如下内容:

python 复制代码
c.NotebookApp.ip='*' # 所有ip都可访问
c.NotebookApp.open_browser = False  # 不打开浏览器
c.NotebookApp.port = 8000 # 可自行指定一个端口, 我这里是8000
c.NotebookApp.notebook_dir = "/work" # 设置工作目录

如果使用sed,可以参考下面语句

shell 复制代码
// 下面这个命令就是将配置文件中的内容替换成新的配置
// 比如第一句就是将 # c.NotebookApp.ip = 'localhost' 替换成 c.NotebookApp.ip = '*'
// 后面两句同理。

sed -ie "s/# c.NotebookApp.ip = 'localhost'/c.NotebookApp.ip = '*'/g" ~/.jupyter/jupyter_notebook_config.py
sed -ie 's/# c.NotebookApp.port = 8888/c.NotebookApp.port = 8000/g' ~/.jupyter/jupyter_notebook_config.py
sed -ie 's/# c.NotebookApp.open_browser = True/c.NotebookApp.open_browser = False/g' ~/.jupyter/jupyter_notebook_config.py

5、运行jupyter服务

shell 复制代码
// 后台运行,并将标准输出信息存到jupyter.log里面
nohup jupyter notebook --allow-root > jupyter.log 2>&1 &  

6、停止运行jupyter服务

shell 复制代码
ps -ef | grep jupyter
kill -9 pid

对Jupyter使用过程问题总结

1 没有代码提示怎么办?

安装配置如下:

shell 复制代码
# 安装 jupyter 的插件管理器 jupyter_contrib_nbextensions
pip3 install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple

# 安装关联的 JavaScript 和 CSS 文件
jupyter contrib nbextension install --user

pip3 install --user jupyter_nbextensions_configurator

# 启用  jupyter 的插件管理器 jupyter_contrib_nbextensions
jupyter nbextensions_configurator enable --user

如果提示: "jupyter notebook autopep8 Error loading library for python: ModuleNotFoundErrorNo module",需要安装一下autopep8

shell 复制代码
pip3 install autopep8

2 如果想切换python版本了怎么办?

python 复制代码
import sys
print(sys.version)

# 3.7.17 (default, Sep 20 2023, 11:53:41) [GCC 12.2.0]

venv创建指定python版本的虚拟环境时,需要本地有指定版本的解释器,但是我本地没有。

shell 复制代码
root@f8996f298763:~# python3.9 -m venv stu
bash: python3.9: command not found

3 想在jupyter里面使用vim怎么办?

参考github: jupyter-vim-binding

激活扩展配置

shell 复制代码
pip3 install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple
jupyter contrib nbextension install --user
pip3 install --user jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

添加vim_binding到插件

shell 复制代码
# Create required directory in case (optional)
mkdir -p $(jupyter --data-dir)/nbextensions
# Clone the repository
cd $(jupyter --data-dir)/nbextensions
git clone https://github.com/lambdalisue/jupyter-vim-binding vim_binding
# Activate the extension
jupyter nbextension enable vim_binding/vim_binding

jupyter里面vim的快捷键有哪些呢?

基本的vim操作。

Option + enter 在创建一个

Command + enter 表示运行

遇见的问题

当时搞到了早上1点过, 部署上去之后死活访问不到服务,因为telnet 不通服务器的8000端口,大概率是猜到了服务器的安全组的策略问题,但是当时很不理解,明明我在服务器上面是放行了8000端口的, 还是不行,后面就休息了,搞不动了。

结果第二天,我用公司的m2的电脑重新登陆阿里云的控制台,发现mbp打开的安全组信息和我早上m2电脑打开的安全组信息不一样,我真的栓Q了,重新开了就好了。

有可能是晚上太迷糊,登陆到了别人号上面?

参考文章

参考文章

待阅读文章:

相关推荐
帅云毅17 分钟前
Web3.0的认知补充(去中心化)
笔记·学习·web3·去中心化·区块链
豆豆17 分钟前
day32 学习笔记
图像处理·笔记·opencv·学习·计算机视觉
逢生博客27 分钟前
使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
python·sqlite·uv·deepseek·trae·cherry studio·mcp服务
堕落似梦33 分钟前
Pydantic增强SQLALchemy序列化(FastAPI直接输出SQLALchemy查询集)
python
nenchoumi311939 分钟前
VLA 论文精读(十六)FP3: A 3D Foundation Policy for Robotic Manipulation
论文阅读·人工智能·笔记·学习·vln
凉、介1 小时前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci
SuperSwaggySUP1 小时前
4/25 研0学习日志
学习
码起来呗1 小时前
基于SpringBoot的高校学习讲座预约系统-项目分享
spring boot·后端·学习
坐吃山猪1 小时前
Python-Agent调用多个Server-FastAPI版本
开发语言·python·fastapi
Yurko132 小时前
【C语言】全局变量、静态本地变量
c语言·学习