如何以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 06 Python
Python实现登录接口的示例代码
Jul 21 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python探索之创建二叉树
Oct 25 Python
Java分治归并排序算法实例详解
Dec 12 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
python 爬取吉首大学网站成绩单
Jun 02 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 JSON中文乱码的解决方法详解
2013/06/06 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
xtree.js 代码
2007/03/13 Javascript
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
js动态切换图片的方法
2015/01/20 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python实现的购物车功能示例
2018/02/11 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
Win8下python3.5.1安装教程
2020/07/29 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
Sisley法国希思黎中国官网:享誉全球的奢华植物美容品牌
2019/06/30 全球购物
2014年高三毕业生自我评价
2014/01/11 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
培训班通知
2015/04/25 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
redis内存空间效率问题的深入探究
2021/05/17 Redis
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL