如何以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实现爬虫下载漫画示例
Feb 16 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python绘制简单彩虹图
Nov 19 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
python线程中的同步问题及解决方法
Aug 29 Python
Python 使用多属性来进行排序
Sep 01 Python
Python pip install如何修改默认下载路径
Apr 29 Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 Python
Python爬虫requests库多种用法实例
May 28 Python
python使用建议与技巧分享(一)
Aug 17 Python
详解python字符串驻留技术
May 21 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
php导出生成word的方法
2015/12/25 PHP
php常用图片处理类
2016/03/16 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
jQuery 1.0.2
2006/10/11 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
javascript取消文本选定的实现代码
2010/11/14 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
python局域网ip扫描示例分享
2014/04/03 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
python实现换位加密算法的示例
2018/10/14 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
Exception类的常用方法
2012/06/16 面试题
数学教学随笔感言
2014/02/17 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
事业单位考察材料范文
2014/12/25 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript