python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Pycharm远程JupyterLab及JupyterHub登录

Pycharm关于远程JupyterLab以及JupyterHub登录问题

作者:autoreleasepools

这篇文章主要介绍了Pycharm关于远程JupyterLab以及JupyterHub登录问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

需求分析

在之前的文章中我们讨论了如何使用Pycharm连接远程服务器并进行调试,Pycharm中SSH、SFTP连接远程服务器编辑调试教程

成功在Pycharm中添加了远程Python解释器,并用其运行了服务器上的.py文件,

但是对于很多数据科学工作者,Jupyter Notebook的灵活易用性仍然是他们选择其的重要一环,

目前的教程讲解的多是如何在服务器上开启jupyter notebook服务并在Pycharm中使用,而并没有关注到多人服务器中的JupyterHub配置情况。

本文章重点讨论如何在远程服务器开启JupyterHub且不能私自打开jupyter notebook服务的情况下如何配置Pycharm使其可以使用远程Jupyter notebook服务。

登录网页JupyterHub

由于无法自己开设jupyter notebook服务,因此首先需要知道服务器的IP和JupyterHub的端口,在浏览器中输入(将IP替换为你的服务器IP,Port替换为你的服务器的JupyterHub所占用的端口)

http://IP:Port/

进入JupyterHub服务页面,如下图所示

这个时候会输入用户名和密码,这里的用户名和密码对应服务器的用户名和密码,填好后点击登录,此时会自动开启服务,并进入你的JupyterLab页面,

如下图所示,画红圈的地方代表了你的虚拟环境。

如果需要向jupyterlab中添加自己的anaconda环境,

首先进入该环境,然后执行以下命令:

python -m ipykernel install --user --name 参数1 --display-name "参数2"

注意需要安装ipykernel这个包,命令中的“参数1”需要改为你的conda创建的环境的名称,“参数2”需要改为你想要在jupyterlab上展示的名字。

例如:

python -m ipykernel install --user --name pytorch1.6 --display-name "pytorch1.6"

执行完这条命令后,会在用户目录下创建相关kernel,此时再打开jupyterhub,就能选择这个kernel了,我这里的kernel名字是torch1.13。

正常来讲这个时候我们就可以在浏览器的JupyterLab里面打开文件敲代码了,接下来配置Pycharm

Pycharm配置远程JupyterHub

打开你需要在服务器运行的Jupyter项目,配置好与服务器的SFTP设置(如何配置请参考"需求分析"中的连接),初始状态如下图所示,红圈和绿圈分别对应着本地和远程服务器mapping的项目文件,接下来我配置mi_estimation.ipynb文件来作为演示。

进入设置中的Jupyter Server页面,

如下图所示,选择Configured Server

在这个地方输入与前面浏览器打开JupyterHub相同的网址,即http://IP:Port/,点击确定,Pycharm会自动验证该地址。

这个时候可以看到下图红色标记处就已经有你的Jupyter Server了。

接着尝试运行任意一个cell,会弹出JupyterHub的认证页面,

如下图所示

在这里要尤其注意的是,这里的Username是你在服务器的用户名。

但是!但是!这里需要填的是Token,而不是密码,接下来我们需要获取Token。

回到在上个阶段打开的JupyterHub网页,选择左上角File->Hub Control Panel

弹出下图所示页面,选择图中圈出的Token

在这个地方列出了目前所有用到JupyterHub Api的地方,

如下图所示

因为我们需要在Pycharm上再配一个Jupyter,所以点击上方按钮“Request new API token”

如下图所示

接下来,粘贴此Token至Pycharm刚才弹出的对话框的Token位置,点击OK

这个时候刚才我们运行的那个Cell已经开始运行了,并给出了运行结果,右上角可以选择虚拟环境

至此,Pycharm配置JupyterHub服务来远程运行Jupyter文件已全部结束。

一点思考

根据之前的文章可以发现,当我们运行.py文件时,点击运行的那一刻,Pycharm是先将本地的文件上传至服务器覆盖相应文件后,再调用远程Python解释器来运行服务器文件。

而针对.ipynb文件却不是这种逻辑,在运行每一个Cell的时候,其实Pycharm并没有将整个文件上传到服务器上,而是仅仅使用Jupyter服务来运行相应Cell代码,只有当我们手动将整个文件upload到服务器上时才会对服务器上相应文件进行更新。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文