我正试图整合一个项目与flake8我编写了一个本地插件(例如,不是PyPI包),如下所述。该项目在本地和github工作流中都使用了虚拟环境。因为flake8是从虚拟环境中调用的,所以它找不到插件,插件位于项目根目录下的文件夹中。当我手动将插件代码添加到虚拟env文件夹时,它集成得很好,flake8能够找到执行它。
解决方案闻起来像某种github预提交配置/钩子,但我在文档中找不到任何关于这个用例的参考。目前flake8在pre-commit-config中是这样配置的:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.2.0
hooks:
- id: debug-statements
- repo: https://github.com/PyCQA/flake8
rev: 4.0.1
hooks:
- id: flake8
additional_dependencies: ['dlint']
是否有一种方法可以使用我的非包装的flake8插件与本地/在github工作流中的虚拟环境?
您需要配置paths
以确保flake8
在sys.path
上放置适当的目录以发现您的插件
这在你链接的文档中有提到,就在后面一点:
但是,如果您正在处理一个没有设置为可安装包的项目,或者Flake8没有从您的代码运行的相同虚拟环境中运行,您可能需要告诉Flake8从哪里导入本地插件。你可以通过配置文件的local-plugins部分中的paths选项来实现:
[flake8:local-plugins] extension = MC1 = myflake8plugin:MyChecker1 paths = ./path/to
注意,如果你的本地插件有它需要的依赖项,这些也需要在你的预提交配置的additional_dependencies
中列出
免责声明:我是当前的flake8维护者,我创建了预提交
原来paths
属性配置错误,应该是
paths =
. flake8_plugins/
不是
paths =
.flake8_plugins/