.. _installation:
Installation
============
JupyterLab can be installed using ``conda``, ``mamba``, ``pip``, ``pipenv`` or ``docker``.
conda
-----
If you use ``conda``, you can install it with:
.. code:: bash
conda install -c conda-forge jupyterlab
mamba
-----
If you use ``mamba``, you can install it with:
.. code:: bash
mamba install -c conda-forge jupyterlab
pip
---
If you use ``pip``, you can install it with:
.. code:: bash
pip install jupyterlab
If you are using a macOS version that comes with Python 2, run ``pip3``
instead of ``pip``.
If installing using ``pip install --user``, you must add the user-level
``bin`` directory to your ``PATH`` environment variable in order to launch
``jupyter lab``. If you are using a Unix derivative (FreeBSD, GNU/Linux,
macOS), you can do this by running ``export PATH="$HOME/.local/bin:$PATH"``.
pipenv
------
If you use ``pipenv``, you can install it as:
.. code:: bash
pipenv install jupyterlab
pipenv shell
or from a git checkout:
.. code:: bash
pipenv install git+git://github.com/jupyterlab/jupyterlab.git#egg=jupyterlab
pipenv shell
When using ``pipenv``, in order to launch ``jupyter lab``, you must activate the project's virtualenv.
For example, in the directory where ``pipenv``'s ``Pipfile`` and ``Pipfile.lock`` live (i.e., where you ran the above commands):
.. code:: bash
pipenv shell
jupyter lab
Alternatively, you can run ``jupyter lab`` inside the virtualenv with
.. code:: bash
pipenv run jupyter lab
Docker
------
If you have `Docker installed `__, you can install and use JupyterLab by selecting one
of the many `ready-to-run Docker images `__
maintained by the Jupyter Team. Follow the instructions in the `Quick Start Guide `__
to deploy the chosen Docker image.
Ensure your docker command includes the ``-e JUPYTER_ENABLE_LAB=yes`` flag to ensure
JupyterLab is enabled in your container.
Usage with JupyterHub
---------------------
Read the details on our :ref:`JupyterLab on JupyterHub documentation page `.
Supported browsers
------------------
The latest versions of the following browsers are currently known to work:
- Firefox
- Chrome
- Safari
Earlier browser versions may also work, but come with no guarantees.
JupyterLab uses CSS Variables for styling, which is one reason for the
minimum versions listed above. IE 11+ or Edge 14 do not support
CSS Variables, and are not directly supported at this time.
A tool like `postcss `__ can be used to convert the CSS files in the
``jupyterlab/build`` directory manually if desired.
Usage with private NPM registry
-------------------------------
To install some extensions, you will need access to an NPM packages registry. Some companies do not allow
reaching directly public registry and have a private registry. To use it, you need to configure ``npm``
**and** ``yarn`` to point to that registry (ask your corporate IT department for the correct URL):
.. code::
npm config set registry https://registry.company.com/
yarn config set registry https://registry.company.com/
JupyterLab will pick up that registry automatically. You can check which registry URL is used by JupyterLab by running::
python -c "from jupyterlab.commands import AppOptions; print(AppOptions().registry)"
Installation problems
---------------------
If your computer is behind corporate proxy or firewall,
you may encounter HTTP and SSL errors due to the proxy or firewall blocking connections to widely-used servers. For example, you might see this error if conda cannot connect to its own repositories::
CondaHTTPError: HTTP 000 CONNECTION FAILED for url
Here are some widely-used sites that host packages in the Python and JavaScript open-source ecosystems. Your network administrator may be able to allow http and https connections to these domains:
- pypi.org
- pythonhosted.org
- continuum.io
- anaconda.com
- conda.io
- github.com
- githubusercontent.com
- npmjs.com
- yarnpkg.com
Alternatively, you can specify a proxy user (usually a domain user with password),
that is allowed to communicate via network. This can be easily achieved
by setting two common environment variables: ``HTTP_PROXY`` and ``HTTPS_PROXY``.
These variables are automatically used by many open-source tools (like ``conda``) if set correctly.
.. code:: bash
# For Windows
set HTTP_PROXY=http://USER:PWD@proxy.company.com:PORT
set HTTPS_PROXY=https://USER:PWD@proxy.company.com:PORT
# For Linux / MacOS
export HTTP_PROXY=http://USER:PWD@proxy.company.com:PORT
export HTTPS_PROXY=https://USER:PWD@proxy.company.com:PORT
In case you can communicate via HTTP, but installation with ``conda`` fails
on connectivity problems to HTTPS servers, you can disable using SSL for ``conda``.
.. warning:: Disabling SSL in communication is generally not recommended and involves potential security risks.
.. code:: bash
# Configure npm to not use SSL
conda config --set ssl_verify False
You can do a similar thing for ``pip``.
The approach here is to mark repository servers as trusted hosts,
which means SSL communication will not be required for downloading Python libraries.
.. code:: bash
# Install pandas (without SSL)
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pandas
Using the tips from above, you can handle many network problems
related to installing Python libraries.
Many Jupyter extensions require having working ``npm`` and ``jlpm`` (alias for ``yarn``) commands,
which is required for downloading useful Jupyter extensions or other JavaScript dependencies. If ``npm`` cannot connect to its own repositories, you might see an error like::
ValueError: "@jupyterlab/toc" is not a valid npm package
You can set the proxy or registry used for npm with the following commands.
.. code:: bash
# Set proxy for NPM
npm config set proxy http://USER:PWD@proxy.company.com:PORT
npm config set proxy https://USER:PWD@proxy.company.com:PORT
# Set default registry for NPM (optional, useful in case if common JavaScript libs cannot be found)
npm config set registry http://registry.npmjs.org/
jlpm config set registry https://registry.yarnpkg.com/
In case you can communicate via HTTP, but installation with ``npm`` fails
on connectivity problems to HTTPS servers, you can disable using SSL for ``npm``.
.. warning:: Disabling SSL in communication is generally not recommended and involves potential security risk.
.. code:: bash
# Configure npm to not use SSL
npm set strict-ssl False