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