如何以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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
Python操作Word批量生成文章的方法
Jul 28 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
python实现堆和索引堆的代码示例
Mar 19 Python
wxPython实现分隔窗口
Nov 19 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 Python
python logging模块的使用
Sep 07 Python
python中@property的作用和getter setter的解释
Dec 22 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
python 镜像环境搭建总结
Sep 23 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
smarty实例教程
2006/11/19 PHP
php实现的ping端口函数实例
2014/11/12 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
一些不错的js函数ajax
2008/08/20 Javascript
javascript 函数调用规则
2009/08/26 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
nodejs实现的一个简单聊天室功能分享
2014/12/06 NodeJs
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
python中os包的用法
2020/06/01 Python
如何在网站上添加谷歌定位信息
2016/04/16 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
美国鲜花递送:UrbanStems
2021/01/04 全球购物
医药个人求职信范文
2014/01/29 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
客户答谢会活动方案
2014/08/31 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书