Installation

[3]:

Please Read This First

Delivering LSP features to your JupyterLab requires three pieces:

jupyter-lsp

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

  • to run, you need:

  • python >=3.6,<3.9.0a0

  • jupyter_server >=1.1.2

jupyterlab-lsp

  • runs in your browser, as an extension to JupyterLab

  • to install it, you need:

  • jupyterlab >=3.0.0,<4.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 approaches 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.6,<3.9.0a0' 'jupyterlab=3.0.0' 'jupyterlab-lsp=3.5.0' 'jupyter-lsp-python=1.1.4'
# 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, manually install a language server of your choice (see the table below).
conda activate lsp

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:

Note: docker instructions were not updated for JupyterLab 3.0 and extension 3.0. Please consider submitting a PR to fix it.

[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=3.0.0' \
    'r-languageserver' \
    'texlab' \
    'chktex' \
    'jupyter-lsp=1.1.4' \
  && jupyter labextension install --no-build \
    '@krassowski/jupyterlab-lsp@3.5.0' \
  && 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
[6]:

Install Jupyter[Lab] LSP

conda
conda install jupyterlab-lsp=3.5.0
pip
pip install jupyterlab-lsp==3.5.0

Next Step: Language Servers

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