Jupyter configuration files =========================== Jupyter configuration is based on the :mod:`traitlets.config` module. Essentially, each Jupyter application (e.g. :mod:`notebook`, or :mod:`nbconvert`) has a number of configurable values which: 1. have default values 2. can be altered form their default by values read from configuration files, which can be a) ``.json`` static files b) ``.py`` config python scripts 3. can be overridden by command-line arguments .. _jupyter-config-path: Jupyter config path ------------------- Jupyter applications search for configuration files in each directory in the *jupyter config path*. This path includes different locations in different operating systems, but you can use the root jupyter command to find a list of all jupyter paths, and look for the config section:: jupyter --paths There are at least three configuration directories 1. a per-user directory 2. a directory in the ``sys.prefix`` directory for the python installation in use 3. a system-wide directory Note that it is likely that to write to the system-wide config directory will require elevated (admin) privileges. This may also be true for the sys-prefix directory, depending on the python installation in use. Finally, you can also specify a configuration file as a command line argument, for example:: jupyter notebook --config=/home/john/mystuff/jupyter_notebook_config.json Note that this can change which filenames are searched for, as noted below. .. _jupyter-config-filenames: Jupyter configuration filenames ------------------------------- Jupyter applications search the :ref:`jupyter-config-path` for config files with names derived from the application name, with file extension of either ``.json`` (loaded as json) or ``.py`` (run as a python script). For example, the ``jupyter notebook`` application searches for config files called ``jupyter_notebook_config``, while the ``jupyter nbconvert`` application searches for config files named ``jupyter_nbconvert_config``, with the file extensions mentioned above. In addition, all jupyter applications will load config files named ``jupyter_config.json`` or ``jupyter_config.py``. Specifying a config file on the command line has the additional slightly subtle effect that it will also change the filename that the application searches for. For example, if I call the notebook using :: jupyter notebook --config=/home/john/mystuff/special_config_ftw.json then instead of searching the :ref:`jupyter-config-path` for files named ``jupyter_notebook_config``, the notebook application will search the config path for other files also named ``special_config_ftw``, which can mean that the normal config files get missed. As a result, it may be preferable to name any custom config files with the standard filename for the jupyter application they pertain to. .. _jupyter-contrib-nbextensions-config-edits: Config files edited by jupyter_contrib_nbextensions --------------------------------------------------- The ``jupyter contrib nbextensions install`` command edits some config files as part of the install: * ``jupyter_notebook_config.json`` is edited in order to: - enable the `jupyter_nbextensions_configurator `__. serverextension - enable the ``contrib_nbextensions_help_item`` nbextension, which adds a link to readthedocs to the help menu * ``jupyter_nbconvert_config.json`` is edited in order to: - edit the nbconvert template path, adding the ``jupyter_contrib_nbextensions.nbconvert_support`` templates directory - add preprocessors ``CodeFoldingPreprocessor`` and ``PyMarkdownPreprocessor`` from the ``jupyter_contrib_nbextensions.nbconvert_support`` module