最近身边有很多朋友已经开始逐渐上手科研了,但对于习惯在Jupyter上写code的人来说,可能会存在这样一个问题:我怎么才能在服务器上使用jupyter呢?如果你也有这样的问题,那么请接着往下看!
首先是jupyter的安装。如果你已经安装了Anaconda,一般情况下会自带jupyter;如果你还没有安装Anaconda的话,请参考【基础知识】Anaconda的安装完成安装。安装完成后如果没有自带jupyter,可以通过下面的这个命令进行安装。
代码语言:javascript复制conda install jupyter
在完成安装之后,要想在服务器上使用jupyter,可以通过以下方法实现:
Step1:通过screen命令打开一个新的作业,这样可以避免由于服务器连接中断导致jupyter上正在跑的程序中断。对screen命令还不熟悉的朋友可以参考【科研利器】Screen命令让程序永不掉线。
代码语言:javascript复制screen -S jupyter
Step2:进入作业中后,输入下面的命令以启动jupyter。后面的--no-browser是指无浏览器模式,因为我们想用本地的浏览器来打开jupyter。
代码语言:javascript复制jupyter notebook --no-browser
Step3:输完上面的命令后,会出现下面的code。大家记住最后的数字8899,这是端口号(port),用来与本地建立端口转发的。通过端口转发,就可以在本地浏览器上打开服务器上的文件夹进行相应的操作。
Step4:在本地打开cmd(命令行模式)。注意这个打开之后就不要关闭了,否则会使得jupyter断开。
Step5:输入如下代码之后,会让你输入密码,即为服务器账户密码。注意,这个密码的输入过程是不显示在屏幕上的,不要以为是你的电脑坏了,如果密码错误会让你重新输入,密码正确则什么也不会显示。其中的8899即为上面你所记住的数字,后面的user_name@ip即为你服务器的账户和ip地址。
代码语言:javascript复制ssh -N -L localhost:8899:localhost:8899 user_name@ip
Step6:在上一步正确输入密码之后,打开你的浏览器,在网址栏输入如下localhost:8899后,会再次让你输入密码,该密码一般为你的服务器账户密码(如果密码错误在下文中有解决办法),正确输入后就可以使用jupyter啦!
以上就是在服务器上使用jupyter的操作方法了。如果大家在step6发现密码错误,又或者你觉得账户密码太长了想重新设置密码,可以通过以下的操作实现。
首先在命令行中输入ipython,进入ipython后输入如下code。
代码语言:javascript复制from notebook.auth import passwd
passwd()
随后输入方便你记的密码,连续输两次。输完密码后,会输出一个字符串,形如:sha1:9e7a5c5e0a29:8cbdvsv2344d141c92beab1c5bc6e9avsdvdsvsv。将其保存下来, 完成以上操作后,通过quit()退出ipython环境。
接着进入到安装目录。
代码语言:javascript复制cd ~/anaconda3/etc/jupyter
输入以下命令后,会产生jupyter_notebook_config.py文件。
代码语言:javascript复制jupyter notebook --generate-config
最后,通过以下命令编辑配置文件。
代码语言:javascript复制vim ~/.jupyter/jupyter_notebook_config.py
找到下面code所在位置,去除前面的#,即取消注释,允许执行,并将hash字符串替换为前面记下的字符。完成之后,通过wq!保存后退出编辑。
代码语言:javascript复制c.NotebookApp.ip = '*' # 允许访问此服务器的 IP,星号表示任意 IP
c.NotebookApp.password = u'sha1:xxx:xxx' # 改为之前生成的密码 hash 字串
c.NotebookApp.open_browser = False # 运行时不打开本机浏览器
c.NotebookApp.port = 12035 # 使用的端口,随意设置
c.NotebookApp.enable_mathjax = True # 启用 MathJax
经过以上操作之后,再重新启动Jupyter后,在浏览器界面输入的就是你刚刚设置的密码了。
以上方法经过本人实践后均是可行的。如果大家在操作过程中有任何问题的话,欢迎添加小编微信(在公众号“邀您进群”菜单栏)请求帮助哈!也欢迎大家邀请身边的朋友、同学加入我们的讨论群,共同学习进步!