一、创建jupyterlab快捷方式
复制Jupyter Notebook的快捷方式
将这两处的Noetbook修改为lab
即
然后打开文件所在位置,找到Jupyter-Notebook-script.py文件,该文件在Anaconda安装路径下的Scripts中
复制该文件
重命名为jupyter-lab-script.py
用记事本打开jupyter-lab-script.py文件
# -*- coding: utf-8 -*-
import re
import sys
from notebook.notebookapp import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
将该文件中的from notebook.notebookapp import main
修改为from jupyterlab.labapp import main
保存
将图标修改为下图
由于CSDN无法上传ico文件,我将图标后缀修改成了png,大家使用该图标使需要自行将后缀名改回.ico,然后将该ico文件放在\Anaconda3\Menu文件夹中,然后在修改图片即可。
jupyterlab 图标
到这里jupyterlab的快捷方式就创建好了,就可以像打开jupyter notebook一样打开jupyterlab了。
二、配置jupyterlab
基础配置
设置路径
在命令行输入jupyter lab --generate-config
生成jupyterlab的配置文件jupyter_lab_config.py,该文件一般位于C:\Users\用户名.jupyter文件夹中
使用记事本或其他编辑器打开jupyter_lab_config.py
在最前方添加如下内容(按需添加):
c.ServerApp.ip='*' # 允许所有 IP 访问
c.ServerApp.root_dir = '默认打开路径'
设置中文
在基础环境中下载中文包
pip install jupyterlab-language-pack-zh-CN
打开Jupyterlab依次点击 设置->语言->中文 即可。
下载插件
jupyter lab3.0及以上的版本不建议在扩展管理中之间下载插件,建议直接使用pip进行下载。
插件推荐
theme-darcula
下载方式
pip install theme-darcula
jupyterlab_materialdarker
下载方式
pip install jupyterlab_materialdarker
除了通过下载主题外还可以通过修改下载的主题的CSS文件来修改主题,插件主题加载的文件路径位于:
E:\Anaconda3\share\jupyter\labextensions@oriolmirosa\jupyterlab_materialdarker\themes@oriolmirosa\jupyterlab_materialdarker
可以通过修改该index.css文件在修改主题。
我使用的主题是在jupyterlab_materialdarker的基础上修改的,css文件代码如下:
@import url(https://fonts.googleapis.com/css2?family=Roboto&display=swap);
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| One Dark Pro theme created by johnnybarrels
| https://github.com/johnnybarrels/jupyterlab_onedarkpro
|----------------------------------------------------------------------------*/
/*
The following CSS variables define the main, public API for styling JupyterLab.
These variables should be used by all plugins wherever possible. In other
words, plugins should not define custom colors, sizes, etc unless absolutely
necessary. This enables users to change the visual theme of JupyterLab
by changing these variables.
Many variables appear in an ordered sequence (0,1,2,3). These sequences
are designed to work well together, so for example, `--jp-border-color1` should
be used with `--jp-layout-color1`. The numbers have the following meanings:
* 0: super-primary, reserved for special emphasis
* 1: primary, most important under normal situations
* 2: secondary, next most important under normal situations
* 3: tertiary, next most important under normal situations
Throughout JupyterLab, we are mostly following principles from Google's
Material Design when selecting colors. We are not, however, following
all of MD as it is not optimized for dense, information rich UIs.
*/
:root {
/* Atom one dark colours (adjusted for higher contrast) */
--one-dark-cyan: #51B6C3;
--one-dark-blue: #5DAEF2;
--one-dark-mono-2: #828997;
--one-dark-red-1: #E26B73;
--one-dark-mono-1: #ABB2C0;
--one-dark-silver: #AAAAAA;
--one-dark-purple: #C775DF;
--one-dark-orange-2: #E6C176;
--one-dark-gutter: #666D7A;
--one-dark-fg: #ABB2BF;
--one-dark-green: #97C475;
--one-dark-red-2: #BE5046;
--one-dark-orange-1: #D29B62;
--one-dark-mono-3: #495163;
--one-dark-accent: #AEB9F5;
--one-dark-bg-1: #21252b;
--one-dark-bg-2: #282c34;
--one-dark-gray-1: #3E4451;
--one-dark-gray-2: #4E576A;
--one-dark-gray-3: #555e73;
--one-dark-button-gray: #7F848E;
--one-dark-comment-gray: #7F848E;
--one-dark-off-white: #EEEEEE;
/* Code mirror SYNTAX HIGHLIGHTING styles */
--jp-mirror-editor-keyword-color: var(--one-dark-purple);
--jp-mirror-editor-atom-color: var(--one-dark-off-white);
--jp-mirror-editor-number-color: var(--one-dark-orange-1);
--jp-mirror-editor-def-color: var(--one-dark-red-1);
--jp-mirror-editor-variable-color: var(--one-dark-mono-1);
--jp-mirror-editor-variable-2-color: var(--one-dark-orange-2);
--jp-mirror-editor-variable-3-color: var(--one-dark-purple);
--jp-mirror-editor-punctuation-color: var(--one-dark-mono-1);
--jp-mirror-editor-property-color: var(--one-dark-blue);
--jp-mirror-editor-operator-color: var(--one-dark-cyan);
/* --jp-mirror-editor-comment-color: var(--one-dark-gray-2); */
--jp-mirror-editor-comment-color: var(--one-dark-comment-gray);
--jp-mirror-editor-string-color: var(--one-dark-green);
--jp-mirror-editor-string-2-color: var(--one-dark-red-1);
--jp-mirror-editor-meta-color: var(--one-dark-cyan);
--jp-mirror-editor-qualifier-color: var(--one-dark-accent);
--jp-mirror-editor-builtin-color: var(--one-dark-cyan);
--jp-mirror-editor-bracket-color: var(--one-dark-mono-1);
--jp-mirror-editor-tag-color: var(--one-dark-red-1);
--jp-mirror-editor-attribute-color: var(--one-dark-red-1);
--jp-mirror-editor-header-color: var(--one-dark-blue);
--jp-mirror-editor-quote-color: var(--one-dark-green);
--jp-mirror-editor-link-color: var(--one-dark-red-1);
--jp-mirror-editor-error-color: var(--one-dark-red-1);
--jp-mirror-editor-hr-color: var(--one-dark-mono-1);
--markdown-font: "Roboto";
/* The space to the left of cells (command mode selector) */
--jp-inpromt-colour: var(--one-dark-bg-1);
--jp-cell-prompt-width: 75px;
/* Cell specific styles */
--jp-cell-padding: 0px 10px 10px 0px;
/* T R B L */
--jp-cell-collapser-width: 8px;
--jp-cell-collapser-min-height: 20px;
--jp-cell-collapser-not-active-hover-opacity: 0.6;
--jp-cell-editor-background: var(--one-dark-bg-2);
/* background colour of all cells */
--jp-cell-editor-border-color: var(--one-dark-bg-1);
--jp-cell-editor-box-shadow: inset 0 0 2px var(--one-dark-off-white);
--jp-cell-editor-active-background: var(--one-dark-bg-2);
/* background colour of current cell */
--jp-cell-editor-active-border-color: var(--one-dark-gray-2);
/* border colour of current cell */
--jp-cell-prompt-font-family: "JetBrains Mono", Menlo, monospace;
--jp-cell-prompt-letter-spacing: 0px;
--jp-cell-prompt-opacity: 1.0;
--jp-cell-prompt-not-active-opacity: 1.0;
--jp-cell-prompt-not-active-font-color: var(--one-dark-gray-2);
--jp-cell-inprompt-font-color: var(--one-dark-mono-1);
--jp-cell-outprompt-font-color: var(--one-dark-gray-2);
--jp-editor-selected-background: var(--one-dark-bg-1);
--jp-editor-selected-focused-background: var(--one-dark-bg-1);
/* Elevation */
--jp-shadow-base-lightness: 32;
--jp-shadow-umbra-color: rgba(var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.2);
/* shadow under menus */
--jp-shadow-penumbra-color: rgba(var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.14);
/* glow under menus */
--jp-shadow-ambient-color: rgba(var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), var(--jp-shadow-base-lightness), 0.12);
/* same? */
--jp-elevation-z0: none;
--jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color),
0px 1px 1px 0px var(--jp-shadow-penumbra-color),
0px 1px 3px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color),
0px 2px 2px 0px var(--jp-shadow-penumbra-color),
0px 1px 5px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color),
0px 4px 5px 0px var(--jp-shadow-penumbra-color),
0px 1px 10px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color),
0px 6px 10px 0px var(--jp-shadow-penumbra-color),
0px 1px 18px 0px var(--jp-shadow-ambient-color);
--jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color),
0px 8px 10px 1px var(--jp-shadow-penumbra-color),
0px 3px 14px 2px var(--jp-shadow-ambient-color);
--jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color),
0px 12px 17px 2px var(--jp-shadow-penumbra-color),
0px 5px 22px 4px var(--jp-shadow-ambient-color);
--jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color),
0px 16px 24px 2px var(--jp-shadow-penumbra-color),
0px 6px 30px 5px var(--jp-shadow-ambient-color);
--jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color),
0px 20px 31px 3px var(--jp-shadow-penumbra-color),
0px 8px 38px 7px var(--jp-shadow-ambient-color);
--jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color),
0px 24px 38px 3px var(--jp-shadow-penumbra-color),
0px 9px 46px 8px var(--jp-shadow-ambient-color);
/* Borders
*
* The following variables, specify the visual styling of borders in JupyterLab.
*/
--jp-border-width: 1px;
--jp-border-color0: var(--one-dark-gray-1);
--jp-border-color1: var(--one-dark-gray-1);
--jp-border-color2: var(--one-dark-gray-1);
--jp-border-color3: var(--one-dark-gray-1);
--jp-border-radius: 3px;
/* UI Fonts
*
* The UI font CSS variables are used for the typography all of the JupyterLab
* user interface elements that are not directly user generated content.
*
* The font sizing here is done assuming that the body font size of --jp-ui-font-size1
* is applied to a parent element. When children elements, such as headings, are sized
* in em all things will be computed relative to that body size.
*/
--jp-ui-font-scale-factor: 1.2;
--jp-ui-font-size0: 0.83333em;
--jp-ui-font-size1: 13px;
/* Base font size */
--jp-ui-font-size2: 1.2em;
--jp-ui-font-size3: 1.44em;
--jp-ui-font-family: "SF Pro Display", "Open Sans", -apple-system, BlinkMacSystemFo