为了学习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了,重新开了就好了。

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

参考文章

参考文章

待阅读文章:

相关推荐
Ws_29 分钟前
leetcode LCR 068 搜索插入位置
数据结构·python·算法·leetcode
lx学习1 小时前
Python学习26天
开发语言·python·学习
qq_273900232 小时前
pytorch register_buffer介绍
人工智能·pytorch·python
大今野2 小时前
python习题练习
开发语言·python
q567315232 小时前
用 PHP或Python加密字符串,用iOS解密
java·python·ios·缓存·php·命令模式
Back~~4 小时前
MFC1(note)
学习
winfredzhang4 小时前
如何使用 python 中的 Pillow 创建可自定义的图标生成器
python·pillow·图标·png
engchina4 小时前
Oracle ADB 导入 BANK_GRAPH 的学习数据
数据库·学习·oracle·graph
qq_273900234 小时前
pytorch detach方法介绍
人工智能·pytorch·python
虞书欣的65 小时前
Python小游戏24——小恐龙躲避游戏
开发语言·python·游戏·小程序·pygame