jupyter lab on win10
Highlight: Solved the jupyter lab using ServerApp rather than Notebook settings issue. [github issue #5970 #437]
解决了jupyter lab 3.0.14 配置时ServerApp, Notebook等文件设置优先级问题。
210707得新server一台,配置miniconda python-3.9-jupyter环境时,因为jupyte_server的加入,整个结构变得混乱,在此记录下。
jupyter lab安装
Miniconda的下载安装不赘述。
在安装好的shell中输入下列语句安装
1 2 3 |
conda install jupyterlab # or pip install jupyterlab |
jupyter的依存关系
在安装间隙,讲解下conda、sever、lab、notebook、python的关系:
- python为核心,在其之上还有一个简单包装-ipython(interactive python)
除了没有web界面,ipython已经具备了notebook的所有核心功能。 - notebook在ipython基础上增加基于web的GUI,界面相对简单,没有侧面的导航栏和丰富的插件管理器
- 新版本的jupyter lab在安装时还会自带jupyter server,此前是jupyter lab的插件之一,目前来看**只负责转发和协调各类端口转发**,日后可能还会具备多用户协作功能。
- 上述的三种jupyter软件(notebook, lab, server) 均为python的库。
三者间的依存关系是后文冲突频发的重要原因。
可以简单理解为,notebook负责写,lab协调各notebook,server则只是转发。 - conda是一款环境environment和包package管理器,类似虚拟机平台vmware等,负责创建虚拟环境以及安装各种包时自动搜寻补充关联包。
通过conda可以制造其他虚拟环境实现不同版本的python共存。
jupyter lab配置
需要先生成配置文件,这里注意生成的是notebook的配置文件
新版本会自动传递notebook的配置文件给lab和server,这一看似方便的举动,造成了网上频发错误和疑惑
即使在官方区也有存在疑问
如篇首提及的:
https://github.com/jupyter/notebook/issues/5970
https://github.com/jupyter-server/jupyter_server/issues/437
1 2 3 4 |
# 以下代码在cmd中输入 jupyter notebook --generate-config # 按照提示查看目录中的jupyter_notebook_config.py文件 |
和linux中配置类似,首先生成password
生成时一定要注意,虽然 notebook配置文件中提示用notebook.auth生成,但是因为最终notebook会将该命令传递给lab。
1 2 3 4 5 |
# 先在conda_shell中输入ipython进入python环境 from jupyter_server.auth import passwd; passwd() # 依次输入密码按下Enter两次后会返回 'sha1:####' |
再修改下述两项即可完成配置,本地运行只需访问localhost:8888
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# your_dir替换为你的路径,前方一定要加上r,表示为raw防止路径中的'\'被转译 # sha1:your_passwd_sha1替换为上一步生成的密码(再次注意要用jupyter_server.auth) c.NotebookApp.notebook_dir = r'your_dir' # sha1:your_passwd_sha1替换为上一步生成的密码(再次注意要用jupyter_server.auth) c.NotebookApp.password = 'sha1:your_passwd_sha1' # '*'表示匹配所有ip,即所有人都可以访问 c.NotebookApp.ip = '*' # 禁止用host的浏览器打开jupyter,做服务器启动时比较有用 c.NotebookApp.open_browser = False # 打开jupyter lab的端口 c.NotebookApp.port = 88** # 允许远程访问 c.NotebookApp.allow_remote_access = True |
环境(env)/内核(kernel)的安装与卸载
首先进入对应环境中
1 2 3 4 5 6 7 8 9 10 11 |
# 下文中的your_env_name均替换为所需要添加的环境的名称 # cmd或conda prompt中 conda activate your_env_name # 安装ipykernel并载入当前环境 conda install ipykernel python -m ipykernel install --name your_env_name --user USER_NAME (非服务器可以省略) # 卸载需进入jupyter 中 jupyter kernelspec remove ENV_NAME # 彻底删除环境还是通过conda conda env remove -n ENV_NAME |
带日志启动与静默运行
将日志记录在jupyter lab 根目录下,可在web端进行trouble shooting
也可以不打开浏览器
1 2 3 4 5 6 7 8 |
# 新建或覆盖日志文件 jupyter lab > '$jupyter_root_dir$\log.txt' 2>&1 # 在原日志文件上追加 jupyter lab >> '$jupyter_root_dir$\log.txt' 2>&1 # 追击日志文件且不开启浏览器 jupyter lab >> '$jupyter_root_dir$\log.txt' 2>&1 --no-browser |
其他可能的报错与解决
nodejs缺失
jupyter 启动时cmd中返回如下图
1 |
[W 07:35:51.998 LabApp] Could not determine jupyterlab build status without nodejs |
可能是nodejs未安装或版本过低,用conda安装即可
1 |
conda install nodejs |
Unicodeescape
1 |
syntaxerror: (unicode error) 'unicodeescape' codec can't decode bytes in pos |
出现这类情况多半是路径前忘加上 r”
导致被转译为正则表达式。
更改路径设置为 r’C:/####’即可
各种包下载缓慢或终端
该问题在按照pytorch官网指示,复制代码配置时出现下载终端,或大小不匹配。
因为pytorch包较大,pytorch和cuda包一起大约2.8GB,
国内连接(包括香港地区)很慢,用清华tuna库不支持最新版python 3.9更新
本次解决方法是修改conda的重连和断连参数,避免连接不稳定时引发的中止
其他修改方案可以【参考CSDN】
1 2 3 4 5 6 7 8 |
# 查看conda配置信息 conda config --show # 修改对应信息 # 分别是重连,读取超时时间和重试次数 conda config --set remote_connect_timeout_secs 40 conda config --set remote_read_timeout_secs 100 conda config --set remote_max_retries 10 |
配置powershell可进行env切换
采用jupyter lab远程连接时,默认进入PS。无法直接用conda切入对应环境进行包的安装等其他配置操作。
参考https://blog.csdn.net/qq_38163755/article/details/88144767
按如下代码设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# win+R 输入 sysdm.mpl # 添加下列路径进入环境变量 $CONDA_ROOT_DIR/Miniconda $CONDA_ROOT_DIR/Miniconda/Scripts $CONDA_ROOT_DIR/Miniconda/Library/bin # 打开anaconda prompt,输入以下命令 conda install -n root -c pscondaenvs pscondaenvs # 以管理员身份启动PowerShell,并执行以下命令,输入y同意 Set-ExecutionPolicy RemoteSigned # 重置conda和powershell的绑定 conda init powershell # 重启powershell测试即可 |
补充:也可以采用cmd直接写入环境变量
1 2 3 4 5 6 7 8 |
# 检查现有所有环境变量 set # 检查path变量 set path (或者 path) # 追加环境变量 set PATH=%PATH%;d:\xxx |
jptlb环境配置 (针对>jupyter lab v3.0 & python3.9)
安装sklearn后,发现jupyter内载入提示package not found
但本地切换环境后再cmd/bash内运行python时则一切正常
表明问题在于jupyter无法载入环境
经查是ipykernel 对于 python3.9支持较差
目前采用conda forge源中的nb_conda_kernels进行环境切换
安装后即可自动检测所有的conda环境,无需再使用ipykernel等安装
安装代码如下:
1 |
conda install -c conda-forge nb_conda_kernels |
最新了解到,jupyter lab v3.0 后将notebook独立出来包装为ServerApp,这可能也是无法使用pykernel的原因之一,各个环境下似乎没有在安装jupyter notebook。在子环境查询jupyter –version,返回jupyter notebook not installed.
具体原因尚不明确,待探究。
相关链接
关于jupyter的基本操作,如环境与包管理,可阅读:
centos7配置jupyter lab (python-3.7)
关于远程访问jupyter服务(可能需要密码访问):
将win10系统电脑转换为服务器
展望
查询config时,发现有SSL设置。
后续尝试下HTTPS协议,和frp转发。