【问题标题】:InvocationError while running flake8 in tox.ini在 tox.ini 中运行 flake8 时出现 InvocationError
【发布时间】:2021-08-11 13:34:20
【问题描述】:

看起来我无法将相对路径或绝对路径传递到应该由 flake8 在 tox.ini 文件中检查的文件夹。

在shell中执行代码后:

flake8 tests/

结果正确:

tests/unit\test.py:17:91: E501 line too long (93 > 90 characters)

但是 tox 通过在命令提示符中键入来启动相同的命令:

tox

结果:

py38 installed: flake8==3.9.2,mccabe==0.6.1,pycodestyle==2.7.0,pyflakes==2.3.1
py38 run-test-pre: PYTHONHASHSEED='64'
py38 run-test: commands[0] | flake8 tests/
tests/unit\test.py:17:91: E501 line too long (93 > 90 characters)
ERROR: InvocationError for command 'C:\Users\48796\PycharmProjects\learningTests\.tox\py38\Scripts\flake8.EXE' tests/ (exited with code 1)
_______________________________________________________ summary _______________________________________________________
ERROR:   py38: commands failed

所以命令正确执行,然后运行出错。正如您在第三行中看到的 - 命令是相同的。

有什么想法吗?

【问题讨论】:

    标签: python-3.x tox flake8


    【解决方案1】:

    因为flake8 在您的代码中检测到错误,所以它退出非零

    当 tox 检测到一个退​​出非零的命令时,它会显示一个 InvocationError

    一切都按预期工作:)


    免责声明:我是当前的 flake8 维护者和 tox 核心开发者

    【讨论】:

    • 正确!当 flake8 调查的代码没有单个错误时,命令结果为 0。感谢您的帮助
    • 有多条命令怎么办。当第一次失败后执行停止时,如何获得说 linter 和单元测试的输出。我希望它们全部运行,并在最后报告任何故障。当忽略非零退出代码时,尽管有错误,最终结果仍为“ok”。
    • 在一个不可能的环境中
    【解决方案2】:

    当我在 PC 上时,我会仔细检查确切的错误消息,但您完全希望 tox 在一个环境中的命令之一失败时失败。

    如果您只是想检查输出,但即使出现问题命令也应该成功,您需要在命令前加上破折号-

    【讨论】:

    • 感谢您的宝贵时间!安东尼的评论足以让我解决这个问题:)
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多