自学气象人 发表于 2024-3-8 18:30:39

【科研利器】在服务器上也能使用jupyter?学它!


jupyter的安装
首先是jupyter的安装。如果你已经安装了Anaconda,一般情况下会自带jupyter;如果你不是通过Anaconda安装的话,可以可以通过下面的这个命令进行安装jupyter。
conda install jupyter
服务器上使用jupyter
在完成安装之后,在服务器上可以直接运行jupyter,但我建议使用screen命令打开一个新的作业进程,这样可以避免由于服务器连接中断导致jupyter上正在跑的程序中断。对screen命令还不熟悉的朋友可以参考【科研利器】Screen命令让程序永不掉线。

step1:通过screen命令打开一个新进程
用screen命令打开一个新进程,命名为jupyter。
(base)$ screen -S jupyter
step2:运行jupyter
在当前目录下运行jupyter,--no-browser表示不直接跳转到浏览器,因为我们后面需要进行端口转接到本地的浏览器上而不是服务器上的浏览器。
(base)$ jupyter notebook --no-browser
JupyterLab extension loaded from /home/zhxia/anaconda3/lib/python3.9/site-packages/jupyterlab
JupyterLab application directory is /home/zhxia/anaconda3/share/jupyter/lab
The port 8888 is already in use, trying another port.
Serving notebooks from local directory: /home/zhxia
Jupyter Notebook 6.4.8 is running at:
http://localhost:8889/?token=9f556c23bd15b887f316e0e3bf7ada1e6d52f154e24df0bf
or <a href="http://127.0.0.1:8889/?token=9f556c23bd15b887f316e0e3bf7ada1e6d52f154e24df0bf" target="_blank">http://127.0.0.1:8889/?token=9f556c23bd15b887f316e0e3bf7ada1e6d52f154e24df0bf</a>
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).这里请大家注意倒数第三行http:.....一行,其中的8889表示jupyter在服务器上的端口号,整行表示jupyter的网址。

step3:在本地cmd进行端口转发
在本地打开cmd(命令行模式)。注意这个打开之后就不要关闭了,否则会使得jupyter断开。在cmd的命令行中输入如下代码,即可完成端口转发(此处localhost后面的端口需要和上面的保持一致)。其中zhxia@210.10.46.99是我们自己的user name和ip,需要改成自己的。
ssh -N -L localhost:8889:localhost:8889 <a href="mailto:zhxia@210.10.46.99">zhxia@210.10.46.99</a>
step4:在浏览器使用jupyter
打开浏览器,输入上面的jupyter的网址(即倒数第三行http:.....一行),即可使用jupyter。


step5:使用ctrl+Alt+A退出screen进程
使用该命令退出进程不影响jupyter的操作。

进阶
如果你觉得每次都要输入jupyter的地址比较麻烦的话,可以用如下办法给jupyter设置一个密码,这样下次就只用在浏览器里面输入localhost:8889后(端口号8889需要根据实际修改),在界面内输入密码就可以了。除此以外,我们还可以通过一行命令让命令行中不显示(base)等虚拟环境名称的字样。

设置jupyter密码
1.在命令行中输入ipython,进入ipython后输入如下code。
(base)$ ipython
Python 3.8.11 (default, Aug3 2021, 15:09:35)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.26.0 -- An enhanced Interactive Python. Type '?' for help.

In : from notebook.auth import passwd
In passwd()
2.随后输入方便你记的密码,连续输两次。
输完密码后,会输出一个字符串,形如:sha1:9e7a5c5e0a29:8cbdvsv2344d141c92beab1c5bc6e9avsdvdsvsv。将其保存下来, 完成以上操作后,通过quit()退出ipython环境。

3.接着进入到安装目录配置config文件
输入以下命令后,会产生jupyter_notebook_config.py文件。
(base)$ cd ~/anaconda3/etc/jupyter
(base)$ jupyter notebook --generate-config
4.最后,通过以下命令编辑配置文件。
(base)$ vim ~/.jupyter/jupyter_notebook_config.py找到下面code所在位置,去除前面的#,即取消注释,允许执行,并将hash字符串替换为前面记下的字符。完成之后,通过wq!保存后退出编辑。
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后,在浏览器里面输入localhost:8889后(端口号8889需要根据实际修改),再输入你刚刚设置的密码就可以了。

取消虚拟环境名称的显示
我们可以在命令行中输入如下命令来取消显示虚拟环境名称(可能需要重启后生效)。如果需要再次打开虚拟环境名称的显示,我们仅需将命令中的false改为true即可。

(base)$ conda config --set changeps1 false


文章来源于微信公众号:自学气象人


页: [1]
查看完整版本: 【科研利器】在服务器上也能使用jupyter?学它!