在iPython笔记本代码中验证PEP8

Sea*_*123 34 python pep8 ipython ipython-notebook

是否有一种简单的方法来检查iPython笔记本代码在编写时是否符合PEP8?

Mat*_*ijn 26

确保您的模块pycodestyle能够根据样式指南检查您的代码.然后使用flake8模块(github repo)启用魔术功能:

pip install pycodestyle flake8 pycodestyle_magic
Run Code Online (Sandbox Code Playgroud)
  • 首先在Jupyter Notebook单元格中加载魔法:

pycodestyle_magic

  • 然后使用单元格中的功能来检查是否符合 %load_ext pycodestyle_magic

%pycodestyle_on

在此输入图像描述

编辑(2018-09-11)

%flake8_on版本0.2.2开始,还可以检查%pycodestyle_off样式指南.运用

%flake8_off

  • 我不确定这个答案是否适用于 Google Colaboratory。软件包安装得很好,但我在尝试运行 `%flake8_on` 或 `%pycodestyle_off` 时遇到了一个奇怪的错误:`TypeError: auto_run_flake8() miss 1 requiredpositional argument: 'result'` 和 `TypeError: auto_run_pycodestyle()缺少 1 个必需的位置参数:'结果'`。 (2认同)

Rag*_* RV 13

使用以下命令为ipython notebook安装pep8扩展:

%install_ext https://raw.githubusercontent.com/SiggyF/notebooks/master/pep8_magic.py
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅官方文档.

之后使用%%pep8Cell magic功能检查您的特定单元格的pep8样式.

请注意,这必须放在需要强制执行pep8检查的每个单元格中.

请参阅此示例.

  • install_ext已被弃用并删除.扩展现在需要在PyPI上发布并使用pip安装. (6认同)

Dav*_*idC 10

如果这有助于任何人,我正在使用:

conttest "jupyter nbconvert notebook.ipynb --stdout --to script | flake8 - --ignore=W391"

  • conttest 保存更改到笔记本时重新运行
  • flake8 - 告诉flake8从stdin获取输入
  • --ignore=W391- 这是因为输出jupyter nbconvert似乎总是在文件末尾有一个"空行",所以我不希望flake8抱怨这一点.

我遇到了markdown单元格的问题(但是它的行长度可能合法地很长):忽略`jupyter nbconvert`中带有`--to script`的markdown单元格.