Jupyter Notebook 安装
Jupyter Notebook 安装配置
Jupyter Notebook 似乎很不喜欢用户安装非最新版。但是为了兼容服务器上的各种库的旧版本 (原因见以往博客),还是试了一下。纯净的安装流程请移步「安装」
Errors
第一个报错的库是 typing-extensions,为了避免 tensorflow 出现问题,首先尝试降级到 4.5.0,然而会在配置 Jupyter Notebook 账号密码时报错。从 Jupyter 仓库看过版本后决定从 7.3 降至 6.5.6。
因为之前的 Python 是手动编译的,这里又埋了一个坑。运行 jupyter notebook --generate-config
,报错
1 | ModuleNotFoundError: No module named '_sqlite3' |
检查 dpkg -l
是安装了 sqlite3 的,问题出在构建 Python3 时缺少 libsqlite3-dev 依赖。安装 libsqlite3-dev 后重新编译安装 Python 3.10.5。
安装 Jupyter Notebook
安装及配置
1 | pip install notebook==6.5.6 |
设置密码
1 | ipython |
root 旁路启动
1 | jupyter notebook --allow-root # port 8888 |
切换 Kernel
问题描述
启动 Notebook 后检查 Python 版本为 3.11.2,并非所期望的 3.10.5
1 | root@pve:~# pip list | grep ipykernel |
排查。
1 | !python --version |
其输出为
1 | Python 3.11.2 |
不一致!
思考
之前提到,实际上我们是通过 alias 指定 Python 版本为 3.10.5,而 alias 的作用是定义自定义命令,在 Jupyter Notebook 中并不生效。
已经通过 echo $SHELL
检查,Jupyter Notebook 的 bash 环境和本地一致,均为 /bin/bash
做一个小测试。在 ~/.bashrc 中写入如下内容
1 | alias test-cmd='echo This command is for testing.' |
在 Jupyter Notebook 中的结果是什么呢?
1 | !test-cmd |
可以看到环境变量生效了,但 alias 并未生效。推测,alias 只在当前 Shell 有效,即便均为 /bin/bash,也是两个不同的 Shell。推测 !python --version
与 Kernel 的实际 Python 版本不一致也是这个原因。
Summary
为了兼容各种旧版库,最终决定安装 6.5.6,不是一步试下来的,中间尝试过诸如 6.5.4 等版本,报了一系列其他库的错误。总结,以后要尽量避免接触老项目,折磨自己。
参考
- Linux 服务器 安装Jupyter notebook 并开启远程访问 - 组学大讲堂问答社区
- Ubuntu安装jupyter,启动出现ModuleNotFoundError: No module named ‘pysqlite2‘ 错误 - 盼小辉丶 - 博客园
- python中切换jupyter notebook版本_mob64ca12dc88a3的技术博客_51CTO博客
- python - ModuleNotFoundError: No module named ‘jupyter_server.contents’ - Stack Overflow
- Releases · jupyter/notebook
- 创建以及更换 Jupyter Notebook 内核 Python 版本_jupyter kernel 创建已经有的python 版本-CSDN博客