Installation

[3]:

Please Read This First

Delivering LSP features to your JupyterLab requires three pieces:

jupyter-lsp

  • runs in your notebook web application on your server to handle requests from the browser to language servers

  • to run, you need:

  • python >=3.6,<3.9.0a0

  • notebook >=4.3

jupyterlab-lsp

  • runs in your browser, as an extension to JupyterLab

  • to install it, you need:

  • nodejs >=10.12,<15

  • jupyterlab >=2.2.0,<3.0.0a0

Language Servers

  • run on your server

  • probably in another language runtime than python

  • some can be automatically detected if installed

  • others also need to be configured

Fast Paths

Here are two approches based on Jupyter documentation. If these do not meet your needs, try The Harder Way.

[4]:

conda (minimal python)

conda create -c conda-forge -n lsp 'python >=3.7,<3.8' 'jupyterlab=2.2.0' 'nodejs >=10.12,<15' 'jupyter-lsp-python=0.9.3'
# jupyter-lsp-python includes both the server extension (jupyter-lsp) and pyls third-party server (python-language-server)
# if you swap it with another pre-made bundle, jupyter-lsp-r, you will get the server extension and r-languageserver;
# alternatively, use jupyter-lsp and manually install a language server of your choice (see the table below).
conda activate lsp
jupyter labextension install '@krassowski/jupyterlab-lsp@2.1.4'

Then run

jupyter lab

Your browser should open to your local server.

docker (data science)

This approach is based roughly on the Jupyter docker-stacks documentation, which should be consulted for more about connecting volumes, passwords, and other advanced features:

[5]:

Dockerfile

# This already contains the python, r, julia, latex, and nodejs runtimes
FROM jupyter/datascience-notebook@sha256:73a577b006b496e1a1c02f5be432f4aab969c456881c4789e0df77c89a0a60c2

RUN conda install --quiet --yes --freeze-installed -c conda-forge \
    'python-language-server' \
    'jupyterlab=2.2.0' \
    'r-languageserver' \
    'texlab' \
    'chktex' \
    'jupyter-lsp=0.9.3' \
  && jupyter labextension install --no-build \
    '@krassowski/jupyterlab-lsp@2.1.4' \
  && jupyter lab build --dev-build=False --minimize=True \
  && conda clean --all -f -y \
  && rm -rf \
    $CONDA_DIR/share/jupyter/lab/staging \
    /home/$NB_USER/.cache/yarn \
  && fix-permissions $CONDA_DIR \
  && fix-permissions /home/$NB_USER

docker-compose.yml

version: '2'

services:
  lsp-lab:
    build: .
    ports:
      - '18888:8888'

Build and Start

docker-compose up

You should now be able to access http://localhost:18888/lab, using the token provided in the log.

The Harder Way

Get A Working JupyterLab environment

Refer to the official JupyterLab Installation Documentation for your installation approach.

pip

conda

pipenv

poetry

*

lab

lab

*

*

*

* PRs welcome!

Verify your lab works:

jupyter lab --version
jupyter lab

Get a Working NodeJS

The JupyterLab Development Environment Documentation shows some approaches for getting NodeJS.

conda

*

nodejs

*

Verify your node works and is findable from python.

jlpm versions
[6]:

Install Jupyter[Lab] LSP

conda
conda install jupyter-lsp=0.9.3
jupyter labextension install @krassowski/jupyterlab-lsp@2.1.4
pip
pip install jupyter-lsp==0.9.3
jupyter labextension install @krassowski/jupyterlab-lsp@2.1.4

Next Step: Language Servers

Now that you have jupyterlab-lsp, jupyter-lsp and all of their dependencies, you’ll need some language servers. See: