python - Python PDM + 使用 pylint 预提交:找不到导入
问题描述
背景
我正在整理一些遗留代码。
我使用PDM来管理依赖项,它将所有依赖包放在__pypackages__
repo 根级别下的文件夹中。PDM 还使用相对较新的pyproject.toml
包配置文件。
我正在尝试采用pre-commit
Git 挂钩,以便在尝试提交、合并和/或创建 PR 之前自动检查格式和样式。
我现在要求pre-commit
只使用几个 Python 工具: pylint
和black
.
问题
大多数工具集可以很好地协同工作。但是,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__
上面提到的。无法导入任何模块,但为了清楚起见,我限制了输出。
我可以pdm run ...
正确地做所有事情,并且 VS Code 可以很好地看到模块。但是pylint
没有找到它,因为它找不到这个__pypackages__
文件夹。
解决方案
您可以通过更新PYTHONPATH
扩展使用的环境变量、在工作区(项目文件夹)中创建一个名为.env
的文件并添加以下条目来解决此问题:
PYTHONPATH=D:/commonScripts
注意:还支持相对路径。.env
可以在此处找到有关文件的更多信息https://code.visualstudio.com/docs/python/environments#_environment-variable-definitions-file
推荐阅读
- python - Telegram Bot 可以要求用户从相机拍照吗?
- elasticsearch - 在 Elasticsearch 中查询嵌套数组
- xamarin - WebView 文件选择器在取消选择后停止响应
- python - 网格搜索未提供最佳参数
- c# - 在 SplashScreen 标签 c# 上显示 DataProcessing
- websphere - java独立客户端远程部署war文件到ibm liberty 20.0.0.x
- ios - 未在 Firebase 控制台上报告的设备崩溃的 Crashlytics
- java - 在 jib java 制作的 docker 镜像中设置链接器
- python - 在没有 root 访问权限的虚拟主机上安装 virtualenv 20.0.33
- android - Android 许可证状态未知 - Flutter 其他相关问题