如何以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处理XML格式数据的方法详解
Mar 21 Python
python 从csv读数据到mysql的实例
Jun 21 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
Jun 19 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Python matplotlib画曲线例题解析
Feb 07 Python
python日期与时间戳的各种转换示例
Feb 12 Python
django实现后台显示媒体文件
Apr 07 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
python使用建议与技巧分享(一)
Aug 17 Python
python调试工具Birdseye的使用教程
May 25 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
Python中字符串对齐方法介绍
2015/05/21 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python用input输入列表的实例代码
2020/02/07 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
专业销售业务员求职信
2013/11/18 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
企业愿景口号
2015/12/25 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB