如何以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关闭windows进程的方法
Apr 18 Python
Python简单获取自身外网IP的方法
Sep 18 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
Dec 15 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
pytorch 调整某一维度数据顺序的方法
Dec 08 Python
Python 串口读写的实现方法
Jun 12 Python
python如何实现代码检查
Jun 28 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
Django中modelform组件实例用法总结
Feb 10 Python
python批量修改xml属性的实现方式
Mar 05 Python
Python基础详解之描述符
Apr 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中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
javascript常用函数(1)
2015/11/04 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
python局部赋值的规则
2013/03/07 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python3.5绘制随机漫步图
2018/08/27 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
python使用Geany编辑器配置方法
2020/02/21 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
幼儿园安全检查制度
2014/01/30 职场文书
小学生考试获奖感言
2014/01/30 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
快递员岗位职责
2014/09/12 职场文书
检讨书范文1000字
2015/01/28 职场文书
热爱劳动主题班会
2015/08/14 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书