官术网_书友最值得收藏!

Configuring the Jupyter Notebook

Many aspects of the Jupyter Notebook can be configured. We covered the configuration of the IPython kernel in the Mastering IPython's configuration system recipe in Chapter 1, A Tour of Interactive Computing with Jupyter and IPython. In this recipe, we show how to configure the Jupyter application and the Jupyter Notebook frontend.

How to do it...

  1. Let's check whether the Jupyter Notebook configuration file already exists:
    >>> %ls ~/.jupyter/jupyter_notebook_config.py
    ~/.jupyter/jupyter_notebook_config.py

    If it does not, type !jupyter notebook --generate-config -y in the notebook. If the file already exists, this command will delete its contents and replace it with the default file.

    Note

    A Jupyter configuration file may exist in Python or in JSON (the same location and filename, but different file extension). JSON files have a higher priority. Unlike Python files, JSON files may be edited programmatically.

  2. We can inspect the contents of the file with the following command:
    >>> %cat ~/.jupyter/jupyter_notebook_config.py
    # Configuration file for jupyter-notebook.
    
    #-------------------------------------------------------
    # Application(SingletonConfigurable) configuration
    #-------------------------------------------------------
    
    ## This is an application.
    
    ## The date format used by logging formatters
    #c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
    
    [...]
    
    #-------------------------------------------------------
    # JupyterApp(Application) configuration
    #-------------------------------------------------------
    
    ## Base class for Jupyter applications
    
    ## Answer yes to any prompts.
    #c.JupyterApp.answer_yes = False
    
    ## Full path of a config file.
    #c.JupyterApp.config_file = ''
    
    ...

    For example, to change the default name of a new notebook, we can add the following line to this file:

    c.ContentsManager.untitled_notebook = 'MyNotebook'
  3. We now turn to the configuration of the Jupyter Notebook frontend. The configuration files are in the following folder:
    >>> %ls ~/.jupyter/nbconfig/
    notebook.json  tree.json
  4. Let's inspect the contents of the notebook configuration file (in JSON):
    >>> %cat ~/.jupyter/nbconfig/notebook.json
    {
      "Cell": {
        "cm_config": {
          "lineNumbers": false
        }
      },
      "Notebook": {
        "Header": false,
        "Toolbar": false
      }
    }
  5. There are several ways to configure the Notebook frontend. We can directly edit this JSON file and reload the notebook. We can also do it in the client using JavaScript. For example, here is how we can disable the auto-closing brackets option in code cells:
    >>> %%javascript
        var cell = Jupyter.notebook.get_selected_cell();
        var config = cell.config;
        var patch = {
              CodeCell:{
                cm_config: {autoCloseBrackets: false}
              }
            }
        config.update(patch)

    If we reload the notebook, this option will be permanently turned off.

    How to do it...

    Auto-close brackets

  6. In fact, this command automatically updates the JSON file:
    >>> %cat ~/.jupyter/nbconfig/notebook.json
    {
      "Cell": {
        "cm_config": {
          "lineNumbers": false
        }
      },
      "Notebook": {
        "Header": false,
        "Toolbar": false
      },
      "CodeCell": {
        "cm_config": {
          "autoCloseBrackets": false
        }
      }
    }
  7. We can also get and change the frontend options from Python:
    >>> from notebook.services.config import ConfigManager
        c = ConfigManager()
        c.get('notebook').get('CodeCell')
    {'cm_config': {'autoCloseBrackets': False}}
    >>> c.update('notebook', {"CodeCell":
                 {"cm_config": {"autoCloseBrackets": True}}})
    {'Cell': {'cm_config': {'lineNumbers': False}},
     'CodeCell': {'cm_config': {'autoCloseBrackets': True}},
     'Notebook': {'Header': False, 'Toolbar': False}}
    >>> %cat ~/.jupyter/nbconfig/notebook.json
    {
      "Cell": {
        "cm_config": {
          "lineNumbers": false
        }
      },
      "Notebook": {
        "Header": false,
        "Toolbar": false
      },
      "CodeCell": {
        "cm_config": {
          "autoCloseBrackets": true
        }
      }
    }

There's more...

The code cell editor used in the Notebook is handled by the CodeMirror JavaScript library. All options are detailed in the CodeMirror documentation.

Here are a few references:

See also

  • The Mastering IPython's configuration system recipe in Chapter 1, A Tour of Interactive Computing with Jupyter and IPython
主站蜘蛛池模板: 宣威市| 博客| 肇源县| 施甸县| 北海市| 绥德县| 旺苍县| 阆中市| 五华县| 卫辉市| 永康市| 竹北市| 扶风县| 丰城市| 昌江| 桑植县| 密云县| 夏津县| 房产| 襄城县| 咸阳市| 靖边县| 赣州市| 南充市| 芜湖市| 长垣县| 桓台县| 柳州市| 汾西县| 安丘市| 将乐县| 江陵县| 吉首市| 台江县| 永仁县| 米林县| 加查县| 忻城县| 舞阳县| 泾源县| 锦屏县|