Python PDM + 使用 pylint 预提交:找不到导入

Python PDM + pre-commit using pylint: imports cannot be found

背景

我正在整理一些遗留代码。

我使用 PDM 来管理依赖项,它将所有依赖包放在 repo 根级别正下方的 __pypackages__ 文件夹中。 PDM 还使用相对较新的 pyproject.toml 包配置文件。

我正在尝试采用 pre-commit Git 挂钩,这样我就可以在尝试提交、合并、and/or 创建 PR 之前自动检查格式和样式。

我要求 pre-commit 目前只使用一些 Python 工具:pylintblack

问题

该工具集的大部分可以很好地协同工作。但是,pylint 找不到存储在 __pypackages__ 文件夹中的任何模块。我读过的大部分内容都建议我更改 $PYTHONPATH 以查找模块。

这个解决方案似乎已经过时了。而且,我不确定如何在整个团队中以稳健的方式做到这一点。我可以更改 Git 挂钩,但是每个工程师的 $PYTHONPATH 可能不同,所以这只适用于我的机器。

我希望 能够在pyproject.toml 文件中添加一些内容以便pylint 找到它。不过,我不确定该写什么,这样它才能在整个团队中正常工作。像

[tools.pylint]
pypackages = "./__pypackages__"

有什么办法可以做到这一点吗?

详情

我不确定是否需要更多细节,但这里是:

我的操作:

> pre-commit run --all-files # The --all-files flag is just to allow me to test without a commit
Trim Trailing Whitespace.................................................Passed
Fix End of Files.........................................................Passed
Check Yaml...........................................(no files to check)Skipped
Check for added large files..............................................Passed
black....................................................................Passed
pylint...................................................................Failed
- hook id: pylint
- exit code: 30

************* Module testfile
testfile.py:18:0: E0401: Unable to import 'boto3' (import-error)

boto3就是上面说的__pypackages__。 None 个模块可以导入,但为了清楚起见我限制了输出。

我可以 pdm run ... 一切正常,VS Code 可以正常查看模块。但是 pylint 找不到它,因为它找不到这个 __pypackages__ 文件夹。

您可以通过更新扩展使用的 PYTHONPATH 环境变量来解决这个问题,方法是在您的工作区(项目文件夹)中创建一个名为 .env 的文件并添加以下条目:

PYTHONPATH=D:/commonScripts

注意:也支持相对路径。 有关 .env 文件的更多信息,请参见此处 https://code.visualstudio.com/docs/python/environments#_environment-variable-definitions-file