标签: flake8

Flake8属性错误:'module'对象没有属性'normalize_paths'

这是我flake8在验证期间的输出:

Traceback (most recent call last):
  File "/usr/local/bin/flake8", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/flake8/main.py", line 25, in main
    flake8_style = get_style_guide(parse_argv=True, config_file=DEFAULT_CONFIG)
  File "/usr/local/lib/python2.7/dist-packages/flake8/engine.py", line 244, in get_style_guide
    options.exclude.extend(pep8.normalize_paths(EXTRA_EXCLUDE))
AttributeError: 'module' object has no attribute 'normalize_paths'
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用它?

python emacs flymake flake8 elpy

9
推荐指数
1
解决办法
680
查看次数

Flake 8:"在一行(冒号)上的多个语句"仅用于以"if"开头的变量名称

flake8在Visual Studio Code中使用,使用Python 3.6变量注释编写一些代码.到目前为止它没有任何问题,但我遇到了一个奇怪的警告.

这很好用:

style: str = """
width: 100%;
...
"""
# Doing sth with `style`
Run Code Online (Sandbox Code Playgroud)

这个也是:

img_style: str = """
width: 100%;
...
"""
# Doing sth with `img_style`
Run Code Online (Sandbox Code Playgroud)

但是,这不会产生以下警告:

iframe_style: str = """
width: 100%;
...
"""
# Doing sth with `iframe_style`
Run Code Online (Sandbox Code Playgroud)

flake8警告

嗯,从技术上讲它确实很好; 代码运行.但不知何故flake8对此并不满意.多行字符串和后面的代码始终相同.

当我省略"f"(i_rame_style)时,我也没有收到警告!所以我想由于某种原因,flake8想到了if foo: bar()这里!?

我在这里错过了什么?这是一个错误flake8吗?

python python-3.x flake8 python-3.6 mypy

9
推荐指数
1
解决办法
1686
查看次数

VS Code &gt; 首选项 &gt; 用户设置 &gt; 扩展 &gt; Python &gt; Linting &gt; Flake8 Args 添加的项目停止工作

请不要将此视为“提出并回答”的问题。我真诚地一直在努力弄清楚为什么这已经停止工作,如果这是一个 VS Code 问题,或者一个 Flake8 问题,或者如果我只是疯了,应该找到另一种方法来解决这个问题。

在寻找一种方法来阻止 Flake8 linter 的“文件太长”和“未使用”警告时,我找到了一个被列为 StackFlow 上最热门的解决方案之一。我完全复制并粘贴了它,它起作用了!很好,但是在遵循 Django 项目教程时,可以了解 admin.py 文件中的这段代码:

from django.contrib import admin
from .models import Choice, Question


class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3


class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]


admin.site.register(Question, QuestionAdmin)

Run Code Online (Sandbox Code Playgroud)

突然,(设置已经工作好几天了),我收到了这个问题警告:行太长(80 > 79 个字符) flake8(E501) (13,80)

我知道我可能对此过于挑剔,但这确实很烦人。我还读到,我可以使用反斜杠来打破行,而不会破坏代码的连续性,但我也尝试过,并收到一条消息,说括号内的反斜杠是多余的。

我返回到设置并检查它们是否仍然与 Args 所建议的实际上一样有效。我删除了更改。我关闭并重新启动 VS Code,返回并再次重新插入设置。仍然遇到相同的错误,我不知道 Flake8 从哪里获取并重现错误消息,其中 80 大于 79 信息。

有谁知道为什么设置突然停止工作并且 flake8 恢复忽略它在设置中被指示忽略的参数?

这是对我不起作用的热门解决方案:VS Code、首选项、用户设置、扩展、Python、Linting、Flake8 Args

"python.linting.flake8Args": [
    "--max-line-length=120", …
Run Code Online (Sandbox Code Playgroud)

python flake8 visual-studio-code

9
推荐指数
3
解决办法
1万
查看次数

为什么在 Python 3 中使用 match.group(0) 时 flake8 会发出警告 F821 -- undefined name 'match'

请考虑以下示例,该示例在列表中查找包含子字符串“OH”的第一个字符串:

list = ["STEVE", "JOHN", "YOANN"]
pattern = re.compile(".*%s.*" % "OH")
word = ""

if any((match := pattern.match(item)) for item in list):
    word = match.group(0)
print(word)
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作并输出“JOHN”,但我从 flake8 行收到以下警告word = match.group(0)

F821 -- undefined name 'match'
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?我可以在没有命令行参数的情况下删除警告或禁用所有 F821 错误吗?

python regex python-3.x flake8

9
推荐指数
1
解决办法
1万
查看次数

S101 在 python 测试中检测到断言的使用

当我为函数编写单元测试并运行时flake8 test_function().py,收到以下错误:

S101 检测到断言的使用。编译为优化字节代码时,所包含的代码将被删除。

我的问题:

  1. 如何在不使用assert关键字的情况下编写单元测试?

  2. 我们应该忽略 flake8 配置中的单元测试吗?

python unit-testing flake8

9
推荐指数
1
解决办法
7229
查看次数

预提交突然无法安装 Flake8

在未对预提交配置文件进行更改的情况下,预提交运行突然失败。尝试初始化 Flake8 环境时,日志显示以下错误消息:

...
[INFO] Initializing environment for https://gitlab.com/pycqa/flake8.git.
An unexpected error has occurred: CalledProcessError: command: ('/usr/bin/git', 'fetch', 'origin', '--tags')
return code: 128
expected return code: 0
stdout: (none)
stderr:
    fatal: could not read Username for 'https://gitlab.com': No such device or address
...
Run Code Online (Sandbox Code Playgroud)

预提交配置文件包含以下条目:

---
repos:
- repo: https://gitlab.com/pycqa/flake8.git
  rev: 3.9.2
  hooks:
  - id: flake8
    exclude: 'tests|env|docs'
Run Code Online (Sandbox Code Playgroud)

pre-commit flake8 pre-commit.com

9
推荐指数
1
解决办法
2923
查看次数

flake8:导入语句顺序错误

PEP8建议:

Imports should be grouped in the following order:

1. standard library imports
2. related third party imports
3. local application/library specific imports

You should put a blank line between each group of imports.
Run Code Online (Sandbox Code Playgroud)

我正在使用Flake8Lint哪个Sublime Text插件用于lint Python文件。

我的代码如下:

import logging
import re
import time
import urllib
import urlparse

from flask import Blueprint
from flask import redirect
from flask import request
from flask.ext.login import current_user
from flask.ext.login import login_required

from my_application import one_module
Run Code Online (Sandbox Code Playgroud)

它将显示警告如下:

导入语句的顺序错误,来自my_application的应该比来自flask.ext.login的要早。

但是flask是第三方库,应该在我my_application导入之前。这就是为什么?如何解决?

python sublimetext3 flake8

8
推荐指数
1
解决办法
2569
查看次数

如何让 Flake8 处理 F811 错误?

我们用它flake8来测试我们的代码,我们pytest用夹具。以下代码:

from staylists.tests.fixtures import fixture1  # noqa: F401

def test_case(fixture1):  # noqa: F811
    # Test goes here
    assert 1 == 1
Run Code Online (Sandbox Code Playgroud)

lib/python/test.py:3:1: F811 redefinition of unused 'fixture1' from line 1在 linting 期间生成错误。

  • 为什么它忽略 noqa 标志?
  • 有没有更好的方法来避免标记此错误?

python flake8

8
推荐指数
1
解决办法
2222
查看次数

无意的尾随逗号,创建一个元组

在Python中,留下这样的尾随逗号当然不是SyntaxError:

In [1]: x = 1 ,

In [2]: x
Out[2]: (1,)

In [3]: type(x)
Out[3]: tuple
Run Code Online (Sandbox Code Playgroud)

但是,与此同时,如果尾随的逗号被意外添加,可能很难捕捉到这种"问题",特别是对于新手来说.

我想我们是否可以在智能代码质量控制功能的帮助下,早期,静态地捕捉到这种"问题"PyCharm ; mypy,pylintflake8静态代码分析工具.

或者,另一个想法是限制/突出显示一个项目元组隐式没有括号.可能吗?

python pylint static-code-analysis pycharm flake8

8
推荐指数
1
解决办法
1526
查看次数

使用工作流程对 github 中的 databricks python 代码进行 flake8 linting

我的 databricks python 代码位于github. 我设置了一个基本工作流程来使用flake8. 这会失败,因为当我的脚本在 databricks 上运行时隐式可用的名称(例如spark、、等)在databricks 外部(在 github ubuntu vm 中)进行 lint时不可用。scdbutilsgetArgumentflake8

如何在github使用中检查 databricks 笔记本flake8

例如我得到的错误:

test.py:1:1: F821 undefined name 'dbutils'
test.py:3:11: F821 undefined name 'getArgument'
test.py:5:1: F821 undefined name 'dbutils'
test.py:7:11: F821 undefined name 'spark'
Run Code Online (Sandbox Code Playgroud)

我的笔记本在github上:

dbutils.widgets.text("my_jdbcurl", "default my_jdbcurl")

jdbcurl = getArgument("my_jdbcurl")

dbutils.fs.ls(".")

df_node = spark.read.format("jdbc")\
  .option("driver", "org.mariadb.jdbc.Driver")\
  .option("url", jdbcurl)\
  .option("dbtable", "my_table")\
  .option("user", "my_username")\
  .option("password", "my_pswd")\
  .load()
Run Code Online (Sandbox Code Playgroud)

我的 .github/workflows/lint.yml

on:
  pull_request:
    branches: …
Run Code Online (Sandbox Code Playgroud)

python github flake8 apache-spark databricks

8
推荐指数
1
解决办法
3862
查看次数