Installation

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.5

  • notebook >=4.3

jupyterlab-lsp

  • runs in your browser, as an extension to JupyterLab

  • to install it, you need:

  • nodejs >8

  • jupyterlab >=1.1,<2

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.

conda (minimal python)

conda create -c conda-forge -n lsp 'python >=3.7,<3.8' 'jupyterlab=1.2' 'nodejs>8' python-language-server
# Also consider: r-languageserver [*]
source activate lsp
python -m pip install 'jupyter-lsp=0.8.0' --no-deps
jupyter labextension install '@krassowski/jupyterlab-lsp@1.0.0'

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:

Dockerfile

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

RUN conda install --quiet --yes --freeze-installed \
    'python-language-server' \
    'jupyterlab=2' \
    'r-languageserver' \
  && python3 -m pip install --no-cache-dir --no-deps \
    'jupyter-lsp=0.8.0' \
  && jupyter labextension install --no-build \
    '@krassowski/jupyterlab-lsp@1.0.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

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

Install Jupyter[Lab] LSP

pip install jupyter-lsp=0.8.0
jupyter labextension install @krassowski/jupyterlab-lsp@1.0.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: