如何以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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python中使用bidict模块双向字典结构的奇技淫巧
Jul 12 Python
玩转python selenium鼠标键盘操作(ActionChains)
Apr 12 Python
python实现多线程抓取知乎用户
Dec 12 Python
Django的信号机制详解
May 05 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
python队列queue模块详解
Apr 27 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
浅谈python中的多态
Jun 15 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
PHP多文件上传实例
2015/07/09 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python3 unicode列表转换为中文的实例
2018/10/26 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
python 如何上传包到pypi
2020/12/24 Python
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
我的梦想演讲稿
2014/04/30 职场文书
安全月活动总结
2014/05/05 职场文书
小学运动会口号
2014/06/07 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
python APScheduler执行定时任务介绍
2022/04/19 Python