0

我有一个使用tox. 我flake8在里面跑。直到现在一切正常,直到我决定在测试中也运行 flake8。

当我打电话时,flake8 ./tests我会得到一些输出。然后我可以修复它。现在我在测试文件夹中没有任何警告。但是当我在 tox 中运行它时会发生一些奇怪的事情(我 100% 确定,像 WPS 或 isort 这样的包与我在本地使用的包具有相同的版本)。基本上我会收到isort警告。问题看起来像这样:

from freezegun import freeze_time

from foo.bar import baz

所以我在从我的库导入的上方有一个第 3 方库导入。这里一切都很好,vscode安装 flake8 或在终端运行 flake8 都不会在这里给出任何警告。问题是,我认为,foo这里不知何故被视为第 3 方库,所以例如在这种情况下,flake 希望我删除这两者之间的换行符。

我基本上尝试了一切(例如pytest-flake8,但这并不好,因为它还运行测试,这是我在其他毒物工作中所做的)。有什么办法可以解决这个问题,因为我的管道因此而不断下降。

PS noqaing IXXX 警告不是这里的解决方案,因为我想要它们,但不是以错误的方式,我在上面介绍过。

PS 2 我在我known_first_party=foo[isort]部分setup.cfg

4

1 回答 1

1

isort对安装在它旁边的库很敏感——这意味着你~使用它时通常需要安装所有依赖项

我研究过一些解决方法:

  • seed-isort-config(最初用于pre-commit) - 这会将 设置为known_third_party适当的列表,以便isort在具有任何依赖项集的任何地方运行仍然可以正确解析
  • reorder_python_imports- 一种替代进口分拣机,不受以下限制isort(为其提供动力的机器也与为进口分类提供动力的机器相同seed-isort-config

(免责声明:我是上述工具的作者,我也是当前的flake8维护者)

于 2019-12-21T18:21:31.963 回答