需求分析
在之前的文章中我们讨论了如何使用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到服务器上时才会对服务器上相应文件进行更新。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论