【问题标题】:Auto-import doesn't follow PEP8自动导入不遵循 PEP8
【发布时间】:2014-12-08 23:51:10
【问题描述】:

考虑以下代码:

from bs4 import BeautifulSoup


data = "<test>test text</test>"
soup = BeautifulSoup(data)
print(soup.find(text=re.compile(r'test$')))

它缺少import re 行,如果没有NameError,它会失败。

现在,我正在尝试使用PyCharmAuto-Import feature:专注于re 并点击Alt+Enter,这会打开以下弹出窗口:

现在,如果我选择 Import 're' 选项,Pycharm 将在脚本顶部插入新的导入行:

import re
from bs4 import BeautifulSoup


data = "<test>test text</test>"
soup = BeautifulSoup(data)
print(soup.find(text=re.compile(r'test$')))

看起来几乎不错,只是它没有跟随PEP8 import guidelines

进口应按以下顺序分组:

  • 标准库导入

  • 相关第三方进口

  • 本地应用程序/库特定导入

您应该在每组导入之间放置一个空行。

换句话说,两个导入之间缺少一个空行:

import re

from bs4 import BeautifulSoup

问题是:是否可以告诉 Pycharm 遵循 PEP8 指南并在自动导入时在具有不同导入类型的行之间插入新行?


作为一种解决方法,我在正确组织导入之后调用Optimize Imports

【问题讨论】:

  • PyCharm claims to follow PEP8 with auto-imports,所以你应该提交一个错误报告。
  • 由于标准、相关和本地进口之间的区别模糊不清,这进一步复杂化了。当然,PyCharm 可能更智能,但一般情况下,您无法权威地说明给定 import foo 属于哪个组。
  • @qarma 说得好。不过,在这种情况下,pycharm 在通过Optimize imports 组织导入方面做得很好。这是关于自动导入的内容。谢谢。

标签: python import pycharm pep8 static-code-analysis


【解决方案1】:

你不能。原因是 PyCharm 并没有告诉您,如果您这样做或任何导入语句都违反了任何 PEP8 指南。第一,您的 PyCharm 已过时(最新版本是 4.0.2/4.2)或第二,您的 PyCharm 似乎有错误,因此有理由提交错误报告。如果您可以尝试安全地下载 PyCharm,再次尝试修复错误。如果这不起作用,请提交错误报告或养成在语句之间留空行的习惯。希望这能回答你的问题!哦,使用 from、import 或两种类型的语句都没有关系。

【讨论】:

  • 谢谢,在 Pycharm 的问题跟踪器上提交了issue
猜你喜欢
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2014-05-24
  • 2019-12-29
  • 1970-01-01
  • 2013-08-14
  • 2016-04-24
  • 2016-08-18
相关资源
最近更新 更多