如何以Winsows Service方式运行JupyterLab


Posted in Python onAugust 30, 2020

有数据分析,数据挖掘,以及机器学习和深度学习实践经验的读者应该会对Jupyter Notebook这一工具十分熟悉,而JupyterLab是它的升级版本,其提供了更具扩展性,更加可定制化的功能选项。

安装与启动JupyterLab的方法与Jupyter Notebook一样简单。

应用安装

pip install jupyterlab

应用启动

jupyter lab

但这样的操作会带来一个问题,在以浏览器打开JupterLab应用窗口的同时,必须始终保证命令行窗口同样处于打开状态。如下图所示:

如何以Winsows Service方式运行JupyterLab

要想解决这样的问题,需要将JupyterLab以Windows Service的方式运行。

而Python代码要在Windows系统里创建Service的话要用到win32serviceutil这个类库。

类库安装

pip install pywin32

服务代码

将以下代码保存为jupyterlabservice.py文件,并放在配置目录之下,如C:\Users\Ken\.jupyter

import inspect
import logging
import os
import win32serviceutil
from jupyterlab.labapp import JupyterApp, LabApp

current_file = os.path.abspath(inspect.getfile(inspect.currentframe()))
os.chdir(os.path.dirname(current_file))


class JupyterLabService(win32serviceutil.ServiceFramework):

  _svc_name_ = "JupyterLab"
  _svc_display_name_ = "Jupyter Lab Service"
  _svc_description_ = "Jupyter Lab Service"

  def __init__(self, args):
    super().__init__(args)
    self.app = LabApp()

  def _init_lab(self):
    JupyterApp.initialize(self.app)
    self.app.init_configurables()
    self.app.init_components()
    self.app.init_webapp()
    self.app.init_terminals()
    self.app.init_server_extensions()
    self.app.init_mime_overrides()
    self.app.init_shutdown_no_activity()

  def SvcDoRun(self):
    self.app.config_dir = "."
    self._init_lab()
    self.app.start()

  def SvcStop(self):
    self.app.stop()

  def SvcShutdown(self):
    self.SvcStop()


if __name__ == '__main__':
  win32serviceutil.HandleCommandLine(JupyterLabService)

服务安装

python .\jupyterlabservice.py install

服务启动

python .\jupyterlabservice.py start

访问localhost:8888网址,可以在浏览器中打开JupyterLab应用,但此时会遇到需要token认证的问题,如下图所示:

如何以Winsows Service方式运行JupyterLab

解决此问题方法是修改配置文件中的token参数。

首先是在配置目录中找到jupyter_notebook_config.py文件,如果没有的话可以通过以下命令创建。

jupyter lab --generate-config

然后找到c.NotebookApp.token一项,将其值设为空字符串。

## Token used for authenticating first-time connections to the server.
#
# The token can be read from the file referenced by JUPYTER_TOKEN_FILE or set
# directly with the JUPYTER_TOKEN environment variable.
#
# When no password is enabled, the default is to generate a new, random token.
#
# Setting to an empty string disables authentication altogether, which is NOT
# RECOMMENDED.
c.NotebookApp.token = ''

重启相应服务后,再次访问localhost:8888网址,这下就正常了。

如何以Winsows Service方式运行JupyterLab

如果不想使用默认的8888端口,也可以在c.NotebookApp.port选项中将其值改成特定的端口号。

## The port the notebook server will listen on (env: JUPYTER_PORT).
c.NotebookApp.port = 9999

再次重启服务,这次便可以通过localhost:9999来访问JuypterLab应用了。

作者:Ken.W
出处:http://www.cnblogs.com/kenwoo

以上就是如何以Winsows Service方式运行JupyterLab的详细内容,更多关于运行JupyterLab的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python打开网页和暂停实例
Sep 30 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python用GET方法上传文件
Mar 10 Python
python中base64加密解密方法实例分析
May 16 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
python批量创建指定名称的文件夹
Mar 21 Python
python tkinter组件使用详解
Sep 16 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 #Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 #Python
python开根号实例讲解
Aug 30 #Python
python一些性能分析的技巧
Aug 30 #Python
python脚本第一行如何写
Aug 30 #Python
golang/python实现归并排序实例代码
Aug 30 #Python
python创建文本文件的简单方法
Aug 30 #Python
You might like
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Django设置Postgresql的操作
2020/05/14 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
HTML5通用接口详解
2016/06/12 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
个人培训自我鉴定
2014/03/28 职场文书
工会换届选举方案
2014/05/21 职场文书
建筑节能汇报材料
2014/08/22 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
转变工作作风心得体会
2016/01/23 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python
MySQL Server层四个日志的实现
2022/03/31 MySQL
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技