如何以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的collections模块中的OrderedDict有序字典
Jul 07 Python
Python实现读取并保存文件的类
May 11 Python
Python内置函数delattr的具体用法
Nov 23 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
matlab中二维插值函数interp2的使用详解
Apr 22 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
Python 绘制可视化折线图
Jul 22 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
Python实现壁纸下载与轮换
Oct 19 Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 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中常见的sql攻击正则表达式汇总
2014/11/06 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
基于vue实现swipe分页组件实例
2017/05/25 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
python处理图片之PIL模块简单使用方法
2015/05/11 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
Python 多进程和数据传递的理解
2017/10/09 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
90后毕业生的求职信范文
2013/09/21 职场文书
零件设计自荐信范文
2013/11/27 职场文书
体育馆的标语
2014/06/24 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js