Python 进口订单编码标准
建议: 导入应按以下顺序分组:Python 进口订单编码标准,python,python-import,static-analysis,pep8,Python,Python Import,Static Analysis,Pep8,建议: 导入应按以下顺序分组: 标准库导入 相关第三方进口 本地应用程序/库特定导入 您应该在每组导入之间放置一个空行 是否有一种方法可以使用静态代码分析工具(如pylint、pyflakes、pychecker、pep8)检查包中的任何地方是否违反了标准 违反的例子: from my_package import my_module from django.db import models import os 正确的导入方式: import os from django.db impor
pylint
、pyflakes
、pychecker
、pep8
)检查包中的任何地方是否违反了标准
违反的例子:
from my_package import my_module
from django.db import models
import os
正确的导入方式:
import os
from django.db import models
from my_package import my_module
更新(2016):有最新的答案
找到了!(在阅读《python黑客指南》时意外) 名为OpenStack Hacking Style Checks的项目引入了几个独特的扩展。其中有一个(相关的) 例如:
- 要求
- (来自总分行):
- 示例中使用的文件
(我们需要告诉flake8我们想要使用自定义检查) UPD:最新版本的tox.ini
更改了检查路径,现在是hacking
hacking.checks.imports.hacking\u import\u group
(检查目标)test.py
(本地导入由my_module.py
使用)test.py
test.py
运行flake8
:
$ flake8 test.py
test.py:2:1: H305 imports not grouped correctly (requests: third-party, sys: stdlib)
test.py:3:1: H305 imports not grouped correctly (sys: stdlib, my_module.print_smth: project)
test.py:3:1: H306 imports not in alphabetical order (sys, my_module.print_smth)
然后,如果我按照PEP8
的正确顺序对导入进行分组:
import sys
import requests
from my_module import print_smth
print_smth(requests.get('https://google.com'))
print_smth(sys.version)
未找到警告:
$ flake8 test.py
$
希望这对将来的人有所帮助。看看或
isort解析全局级别导入行的指定文件(在try/excepts块、函数等外部导入),并将它们全部放在文件顶部,按导入类型分组:
- 未来
- Python标准库
- 第三方
- 当前Python项目
- 显式本地(.pre-import,如:from.import x)
将此功能插入flake8当前版本的pylint现在执行此操作,并将其报告为错误类C0411。A
flake8
插件存在:
此程序包添加了3个新的flake8警告
I100:您的导入语句顺序错误
I101:您的from导入中的名称顺序错误
I201:节或导入之间缺少换行符
Flake8插件字母顺序检查导入排序顺序,设计用于使用黑色格式化程序。它遵循黑色格式化程序的方法,即使用单一样式,而不可能配置样式。字母顺序还检查
\uuuu all\uuuu
属性的顺序。pep8工具目前没有检查此项-它只检查一行上的多个导入(E401)@DNA很好,谢谢。希望外面有什么。可能会这样,但我不是100%确定。不过这要花很多钱。@Claudiu-Pycharm也有一个社区版本。如果你没有找到什么东西,你可以编写自己的pylint插件来帮你检查。请看一个插件示例。(这可能更适合作为评论,但我没有评论的名声。)你应该把赏金奖励给你自己:-)。顺便说一句,我可能会自己开始使用它。他们拿出了这张支票,说它太容易出错和困难:@jobevers谢谢你的更新!好的,我使用它没有任何问题:)请注意,如果运行isort script\u name.py——只检查
——它将只检查未排序的导入并打印结果——这就是我需要的。非常感谢您的选择。isort-rc--check--diff
递归检查所有文件,只检查,显示一个diff。现在这应该是一个更高的投票结果了。对于不再显示错误号的较新版本,它是错误类错误的导入顺序
。
def print_smth(smth):
print smth
$ flake8 test.py
test.py:2:1: H305 imports not grouped correctly (requests: third-party, sys: stdlib)
test.py:3:1: H305 imports not grouped correctly (sys: stdlib, my_module.print_smth: project)
test.py:3:1: H306 imports not in alphabetical order (sys, my_module.print_smth)
import sys
import requests
from my_module import print_smth
print_smth(requests.get('https://google.com'))
print_smth(sys.version)
$ flake8 test.py
$