概述
jupyter lab
本身并不支持代码格式化。目前,比较成熟的ag真人游戏的解决方案就是使用jupyterlab_code_formatter
插件。
jupyterlab_code_formatter
支持python常见的代码格式化包,比如autopep8
、black
、isort
等,还可以自定义格式化工具。可以通过编辑器菜单、右键菜单、工具栏按钮等方式对单元格内的代码进行格式化。
jupyterlab_code_formatter
项目地址为:https://github.com/ryantam626/jupyterlab_code_formatter
jupyterlab_code_formatter
文档地址为:https://jupyterlab-code-formatter.readthedocs.io/en/latest/
安装
安装环境要求
jupyter lab
最好版本大于3.0.0,python版本要求3.6 。
第一步:安装jupyterlab_code_formatter
pip install jupyterlab_code_formatter
第二步:安装python代码格式化包(如果已安装过,此步骤可省略)
jupyterlab_code_formatter
支持python常见的代码格式化包,比如autopep8
、black
、isort
等。
插件安装完成后,需要安装代码格式化包。
-
注意插件默认支持的包是
isort
和black
,安装这两个包后续会避免很多问题! 安装命令为:pip install black isort
。执行该命令可省略第2个操作,不安装autopep8
包。 -
由于不太熟悉
isort
和black
,这里我们选择安装autopep8
包。安装命令为:pip install autopep8
第三步:重启jupyter lab
服务
注意!不是重启jupyter lab
内核!
点击jupyter lab
左侧栏插件
图标,在installed
列表下,可以观察到jupyterlab_code_formatter
已安装。(务必启用插件功能)
应用插件
插件安装完成后,打开记事本即可对代码进行格式化,格式化方式有以下几种:
通过菜单进行格式化
正确安装插件和格式化包之后,在edit
菜单中会添加对应的菜单项。
注意!只有安装对应的格式化包才会显示相应的菜单项。
选中菜单项,将对当前单元格的代码进行格式化。
通过鼠标右键菜单格式化
插件安装成功后,右键点击单元格或笔记本空白处,在弹出的右键菜单中会出现format cell
菜单项。单击菜单项会对单元格或文件进行代码格式化。但是,前提是正确配置了默认格式化包(默认为isort
和black
)。插件默认会依次使用isort
和black
进行格式化。由于这里没有安装isort
和black
,因此会提示错误。
没有正确安装配置isort
则会提示如下错误jupyterlab code formatter error formatter isort not found!
如果安装了isort
但未配置,未安装black
,则会提示如下错误jupyterlab code formatter error formatter balck not found!
通过工具栏按钮
插件安装成功后,笔记本上方工具栏中会添加一个格式化按钮。单击按钮会对单元格或文件进行代码格式化。但是与右键菜单类似,前提是正确配置了默认格式化包。
配置插件
配置插件方法如下:依次点击jupyter lab
settings
菜单→ advanced settings editor
菜单项→jupyterlab code formatter
进入插件配置界面。
在右侧的user preference
中输入自定义配置即可覆盖默认配置。
系统配置为如下,默认使用isort
和black
作为格式化工具。
{
// jupyterlab code formatter
// @ryantam626/jupyterlab_code_formatter:settings
// jupyterlab code formatter settings.
// **********************************************
// autopep8 config
// config to be passed into autopep8's fix_code function call as the options dictionary.
"autopep8": {
},
// black config
// config to be passed into black's format_str function call.
"black": {
"line_length": 88,
"string_normalization": true
},
// auto format config
// auto format code when save the notebook.
"formatonsave": false,
// formatr config
// config to be passed into formatr's tidy_source function call.
"formatr": {
"indent": 2,
"arrow": true,
"wrap": true,
"width_cutoff": 150
},
// isort config
// config to be passed into isort's sortimports function call.
"isort": {
"multi_line_output": 3,
"include_trailing_comma": true,
"force_grid_wrap": 0,
"use_parentheses": true,
"line_length": 88
},
// code formatter preferences
// preferences for this plugin
"preferences": {
"default_formatter": {
"python": [
"isort",
"black"
],
"r": "formatr"
}
},
// styler config
// config to be passed into styler's style_text function call.
"styler": {
},
// yapf config
// config to be passed into yapf's formatcode function call.
"yapf": {
"style_config": "google"
}
}
配置实例: 设置autopep8
为默认格式工具
{
"preferences": {
"default_formatter": {
"python": "autopep8",
"r": "styler"
}
}
}