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

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
主站蜘蛛池模板: 嵊州市| 武安市| 手机| 阿瓦提县| 塘沽区| 海淀区| 永昌县| 伊吾县| 临颍县| 齐齐哈尔市| 武清区| 巴南区| 郎溪县| 游戏| 西安市| 胶南市| 达拉特旗| 新丰县| 巴南区| 定结县| 乐安县| 南岸区| 巩留县| 闻喜县| 夏津县| 武冈市| 湘阴县| 台山市| 祁门县| 玉树县| 普兰县| 子洲县| 拜城县| 凤凰县| 庆安县| 洞头县| 隆化县| 喀什市| 长泰县| 军事| 大邑县|