使用本方法前,请确保Jupyter安装完成。
思路说明:
按以下思路编写shell脚本(文末直接查看脚本)
- 指定使用WSL2网络地址0.0.0.0启动Jupyter
jupyter notebook --ip=0.0.0.0
ifconfig
查看WSL2 IPV4地址- 将启动时输出的访问地址中的IP替换为WSL2 IPV4地址
- 通过wsl2打开宿主机浏览器,访问上一步中输出的地址
wsl中允许调用window命令或执行.exe文件。例如在wls中执行以下命令,可以打开chrome并访问百度。
${chrome路径}/chrome.exe "http://www.baidu.com"
此处需要注意:windows目录中可以包含空格。在wsl命令行中直接使用到带空格的目录时,直接加上反斜杠对空格进行转义即可。但是在shell脚本中,即使进行了转义,使用时还是会报错。
解决的办法是,先用ln -s ${.exe路径} ${指定路径}/${别名}
将需要使用到的exe文件直接链接到指定目录,再在shell脚本中进行调用。
例如:(请根据实际情况修改exe路径,及链接的目标路径)
# 我使用的是新版edge,exe路径为“C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe”,在wsl中只需要将“C:”改为“/mnt/c”
ln -s /mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe /home/${WSL用户名}/wincmd/edge
#这样就可以使用/home/${WSL用户名}/wincmd/edge 打开edge了 #添加上URL,就可以打开指定网页
/home/${WSL用户名}/wincmd/edge "http://www.baidu.com"
#若长期使用,可以考虑修改.bashrc,将其加入到环境变量中
启动脚本
复制以下脚本,并创建“jupyter.sh”,修改指定内容后,使用./jupyter.sh [启动路径]
即可启动并输出访问地址。
#!/usr/bin/env bash
#set -ex
# 若有多个jupyter,此处可直接指定路径
jupyter=$(which jupyter)
# 指定浏览器,请根据实际情况修改
bowser=/home/${WSL用户名}/wincmd/edge
# 指定Jupyter启动路径
basedir=$1
if [[ ${basedir} = '' ]];then
echo "usage:"
echo " ./jupyter.sh [path]"
echo " [path] The base path of Jupyter"
exit 1
fi
# 进入Jupyter启动路径
cd "${basedir}" || exit 1
echo "启动路径: $(pwd)"
# 使用WSL2网络地址启动Jupyter,并重定向日志
nohup "${jupyter}" notebook --ip=0.0.0.0 > jupyter.log &
# 请根据实际启动速度调节等待时间
sleep 2s
# 搜索token
token=$(head jupyter.log | grep token=)
# 截取端口及之后的内容
port=${token##*:}
# 截取端口
port=${port%%/*}
# 截取"="之后的token
token=${token##*=}
# 获取WSL2 IP
ip=$(ifconfig | grep 'inet ' | awk '{print $2}' | grep -v 127)
# 输出访问地址
url="http://${ip}:${port}/?token=${token}"
echo "$url"
# 使用宿主机浏览器进行访问
${bowser} "$url"
来源:oschina
链接:https://my.oschina.net/vxb/blog/4286388