如何以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之有容乃大的list(3)
Sep 15 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
Python入门教程之if语句的用法
May 14 Python
Python实现的下载网页源码功能示例
Jun 13 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
解决python "No module named pip" 的问题
Oct 13 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python实现身份证实名认证的方法实例
Nov 08 Python
python实现一个猜拳游戏
Apr 05 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 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实现禁用IE和火狐的缓存问题
2012/12/03 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
js同源策略详解
2015/05/21 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
vue 指定组件缓存实例详解
2018/04/01 Javascript
从零开始学习搭建React脚手架项目
2018/08/23 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
Python通过future处理并发问题
2017/10/17 Python
Python中进程和线程的区别详解
2017/10/29 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
Python 从attribute到property详解
2020/03/05 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
教师通用专业自荐书范文
2014/02/11 职场文书
健康家庭事迹材料
2014/05/02 职场文书
公司员工体检通知
2015/04/21 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
mysql 获取时间方式
2022/03/20 MySQL
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android