我有一个严格的预提交钩子设置与flake8,所以我不能承诺,直到它开心.这通常是一件好事,但它会导致一些看似没问题的问题.
我无法让Flake8识别出来FileNotFoundError.
example.py
try:
pass
except FileNotFoundError:
pass
Run Code Online (Sandbox Code Playgroud)
这是足以使Flake8生成错误的代码
$ flake8 example.py
example.py:3:8: F821 undefined name 'FileNotFoundError'
$ python example.py # no error
$ python3 example.py # no error
Run Code Online (Sandbox Code Playgroud)
我检查了python文档,FileNotFoundError是一个'内置'异常,所以我认为我不应该从任何地方导入它,而我的python解释器没有抱怨它,只是看起来像flake8的问题.
似乎有太多的Python linting包,我很想知道我们应该使用哪一个.
我怀疑安装两个会提供一个令人困惑的经验,如果不是甚至触发奇怪的错误.
以下是我想澄清的几个方面:
我像往常一样通过git克隆它在我的Pathogen bundle文件夹上安装了vim-flake8,但是当我尝试在一个Python文件中按下F7或使用插件时:call Flake8(),我收到以下消息:
处理函数Flake8时检测到错误:
第8行:
找不到文件flake8.请先安装它.
任何人都有一些关于发生了什么的线索?
假设我有一个带有长行的定界文档的文件:
some_string = '''
very long lines here, 20 lines each of length 500
'''
Run Code Online (Sandbox Code Playgroud)
如何忽略该定界文档中的所有 flake8“行太长”错误,而不排除整个文件的检查?
我正在使用flake8Python 的 linter,并且有很多代码格式问题,例如blank line contains whitespace flake8(W293)
我正在尝试自动修复这些 linting 问题。我有这些设置:
"python.linting.enabled": true,
"python.linting.flake8Enabled": true,
"python.linting.lintOnSave": true,
"python.linting.flake8Args": [
"--ignore=E501",
],
"editor.formatOnSave": true
Run Code Online (Sandbox Code Playgroud)
我正在使用默认autopep8格式化程序,但它似乎什么也没做。当我保存文件或运行命令时没有任何反应Format Document。
有什么方法可以自动修复这些 linting 错误吗?
我一直在学习如何在tox中为我的python项目进行测试.
我有(应该是)一个相当标准的tox初始化文件,如下所示:
[tox]
envlist=py27,flake8
...
[testenv:flake8]
deps=flake8
commands=flake8 library # 'library' is temp. name of project
Run Code Online (Sandbox Code Playgroud)
一切看起来都很正常,所有测试工作,甚至flake8输出都通过(下面的输出).但是,tox引发了一个InvocationError(它在使用pylint进行测试时也是如此)
flake8 recreate: /Users/shostakovich/projects/project_templates/library/.tox/flake8
flake8 installdeps: flake8
flake8 inst: /Users/shostakovich/projects/project_templates/library/.tox/dist/library-0.1.0.zip
flake8 installed: flake8==2.4.1,library==0.1.0,mccabe==0.3,pep8==1.5.7,pyflakes==0.8.1,wheel==0.24.0
library/__main__.py:12:1: F401 'os' imported but unused
library/__main__.py:13:1: F401 're' imported but unused
...
ERROR: InvocationError: '/Users/shostakovich/projects/project_templates/library/.tox/flake8/bin/flake8 library'
Run Code Online (Sandbox Code Playgroud)
我在MaxOSX 10.9.5上运行tox 2.0.2.如果我直接调用flake8或pylint(上面显示了flake8的版本),问题就消失了.
我在我的项目中使用Flake8 git钩子,我想放宽行长度限制,但仅限于一个项目.鉴于它看起来没有明确的API,我该如何修改这个钩子来做到这一点?或者,是否有一个git-config设置或环境变量可以让我设置它?这是钩子源代码:
#!/usr/bin/env python
import os
import sys
import logging
import os.path as P
from flake8.main import git
if __name__ == '__main__':
ret = git.hook(
strict=git.config_for('strict'),
lazy=git.config_for('lazy'),
)
if ret:
sys.exit(ret)
Run Code Online (Sandbox Code Playgroud) 我们正在尝试解决 PEP8 E402 的问题。
大多数情况下,我们的代码被破坏:
import os
os.environ['LIB_CAN_THROW_ERROR_ON_IMPORT'] = 2
import lib
os.environ['LIB_CAN_THROW_ERROR_ON_IMPORT'] = 0 # back
Run Code Online (Sandbox Code Playgroud)
——
if sys.version_info[0] > 2:
import python3lib
else:
import python2lib
Run Code Online (Sandbox Code Playgroud)
——
try:
import lib
except:
print('lib is required')
sys.exit(1)
Run Code Online (Sandbox Code Playgroud)
如何解决这些违规行为?
我想在使用Jupyter-Notebook时运行Pylint或任何等效项.有没有办法以这种方式安装和运行Pylint?
每当有一个内联断言规则需要针对 bool 语句进行验证时,在 VSCode 中使用 python black 格式化程序都会破坏该行,导致 flake8 发出有关规则 W503 的警告
line break before binary operatorflake8(W503)
assert (
...
!= ...
)
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题而不是忽略该规则的方法?
flake8 ×10
python ×10
atom-editor ×1
formatting ×1
git ×1
githooks ×1
linter ×1
pep8 ×1
pycodestyle ×1
pyflakes ×1
pylint ×1
python-3.x ×1
python-black ×1
testing ×1
tox ×1
vim ×1