如何以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 相关文章推荐
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python连接mongodb密码认证实例
Oct 16 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
python实现抖音点赞功能
Apr 07 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
python新手学习可变和不可变对象
Jun 11 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
pip install命令安装扩展库整理
Mar 02 Python
Python jiaba库的使用详解
Nov 23 Python
Python可变与不可变数据和深拷贝与浅拷贝
Apr 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
2017/06/07 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
javascript取消文本选定的实现代码
2010/11/14 Javascript
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
Python使用MD5加密字符串示例
2014/08/22 Python
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
化验室技术员岗位职责
2013/12/24 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
vue实现列表垂直无缝滚动
2022/04/08 Vue.js
详解Go语言中Get/Post请求测试
2022/06/01 Golang