如何以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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
解决python读取几千万行的大表内存问题
Jun 26 Python
在python中实现对list求和及求积
Nov 14 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
python用requests实现http请求代码实例
Oct 31 Python
Python实现打印实心和空心菱形
Nov 23 Python
numpy 声明空数组详解
Dec 05 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
解决pycharm同一目录下无法import其他文件
Feb 12 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
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
基于jQuery实现在线选座之高铁版
2015/08/24 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
layui实现文件或图片上传记录
2018/08/28 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
python 快速排序代码
2009/11/23 Python
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
Python实现通讯录功能
2018/02/22 Python
python 删除非空文件夹的实例
2018/04/26 Python
flask-restful使用总结
2018/12/04 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
PyQt5实现简单的计算器
2020/05/30 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
ECHT官方网站:男女健身服
2020/02/14 全球购物
类和结构的区别
2012/08/15 面试题
幼儿园中秋节活动方案2013
2014/01/29 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
委托书范本
2014/09/13 职场文书
个人廉洁自律总结
2015/03/06 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
Python中文纠错的简单实现
2021/07/07 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS