使用mypy预提交指定venv跨平台

问题描述 投票:0回答:1

我正在使用

pdm
,每个项目都有自己的
.venv
。使用
mypy
时,我需要像 Windows 上的
mypy --python-executable ./.venv/Scripts/python.exe .
或 Linux 上的
mypy --python-executable ./.venv/bin/python .
一样指定 venv。

现在我想使用

pre-commit
并将
mypy
放入挂钩中。我写

- repo: https://github.com/pre-commit/mirrors-mypy
  rev: v1.11.1
  hooks:
  - id: mypy

这样,我无法提交任何代码,因为我会在

mypy
中失败,因为我没有指定venv。所以我必须

  rev: v1.11.1
  hooks:
  - id: mypy
    args: ["--python-executable", "./.venv/Scripts/python"]

在我的 Windows 计算机上。 现在一切都很顺利,但我立即意识到在linux上会失败,因为没有

.venv/Scripts/python
而是
.venv/bin/python
。 那么,我应该如何在预提交跨平台中使用 mypy 呢?

python mypy pre-commit pre-commit.com
1个回答
0
投票

你有点错过了这里预提交的要点(它的目的是为你配置和管理你的环境,这样你的贡献者就不必经历 N 个咒语来让 linting 工作)——也许

mypy
就像钩子不太适合您的用例。

你可能会更好地使用

language: system
(并且只需直接调用你的virtualenv的
mypy
),但这显然是不受支持的领域(取决于正在测试的存储库的安装状态——因为它是未配置的)

另一个想法是编写一个脚本来为您处理平台差异(使用

entry: ./your-script
)——但这仍然会对您的贡献者造成伤害,因为他们必须正确手动设置
./.venv
才能运行棉绒

在您的情况下,最好通过预提交使用mypy - 通过

additional_dependencies

管理所有类型的依赖项

免责声明:我写了预提交

© www.soinside.com 2019 - 2024. All rights reserved.