如何以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 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python set集合类型操作总结
Nov 07 Python
Python 多线程实例详解
Mar 25 Python
Django 实现下载文件功能的示例
Mar 06 Python
python中的句柄操作的方法示例
Jun 20 Python
python实现大文本文件分割
Jul 22 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
Python zip函数打包元素实例解析
Dec 11 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
Mar 09 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
Matplotlib animation模块实现动态图
Feb 25 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 jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
Python中针对函数处理的特殊方法
2014/03/06 Python
答题辅助python代码实现
2018/01/16 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
简述 Python 的类和对象
2020/08/21 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
应聘自荐书
2013/10/08 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
优秀公益广告词大全
2014/03/19 职场文书
《开国大典》教学反思
2014/04/19 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
校长四风对照检查材料
2014/09/27 职场文书
教师学期末个人总结
2015/02/13 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
大学校园招聘会感想
2015/08/10 职场文书
食品安全主题班会
2015/08/13 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python