如何以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开发的HTTP库requests详解
Aug 29 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
python批量下载网站马拉松照片的完整步骤
Dec 05 Python
Flask框架工厂函数用法实例分析
May 25 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Python流程控制语句的深入讲解
Jun 15 Python
keras得到每层的系数方式
Jun 15 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
python中@contextmanager实例用法
Feb 07 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防止form重复提交的方法
2013/07/01 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
详解JavaScript中return的用法
2017/05/08 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python删除服务器文件代码示例
2018/02/09 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
更改Python的pip install 默认安装依赖路径方法详解
2018/10/27 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
军训考核自我鉴定
2014/02/13 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
实例讲解Python中sys.argv[]的用法
2021/06/03 Python