簡體   English   中英

在 Windows 中運行預提交 python package 給出 ExecutableNotFoundError: Executable `/bin/sh`

[英]running pre-commit python package in Windows gives ExecutableNotFoundError: Executable `/bin/sh`

我正在處理一個項目,其中pre-commit==2.15.0 2.15.0 被添加到 python 需求文件中。 我安裝了要求。 現在,當我嘗試執行git commit時,出現以下錯誤:

An unexpected error has occurred: ExecutableNotFoundError: Executable `/bin/sh` not found
Check the log at C:\Users\username\.cache\pre-commit\pre-commit.log

在我的預提交日志中,我有:

pre-commit version: 2.15.0
sys.version:
    3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
sys.executable: c:\users\username\appdata\local\programs\python\python39\python.exe
os.name: nt
sys.platform: win32

Traceback (most recent call last):
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\error_handler.py", line 65, in error_handler
    yield
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\main.py", line 368, in main
    return hook_impl(
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line 231, in hook_impl
    retv, stdin = _run_legacy(hook_type, hook_dir, args)
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\commands\hook_impl.py", line 42, in _run_legacy
    cmd = normalize_cmd((legacy_hook, *args))
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\parse_shebang.py", line 82, in normalize_cmd
    exe = normexe(cmd[0])
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\parse_shebang.py", line 61, in normexe
    _error('not found')
  File "c:\users\username\appdata\local\programs\python\python39\lib\site-packages\pre_commit\parse_shebang.py", line 51, in _error
    raise ExecutableNotFoundError(f'Executable `{orig}` {msg}')
pre_commit.parse_shebang.ExecutableNotFoundError: Executable `/bin/sh` not found

我在 Windows 工作,我的隊友在 Mac 上工作。

看起來 precommit 正在嘗試引用不在 Windows 中的/bin/sh腳本。如何讓這個 precommit 工作?

您以前的.git/hooks/pre-commit.legacy .git/hooks/pre-commit使用的是不可移植的 shebang ( #!/bin/sh ) )

如果您將工具調整為使用#!/usr/bin/env sh那么預提交將能夠運行它(即使在 Windows 上)

或者,如果您不想在遷移模式下使用pre-commit ,請運行pre-commit install --force

您還使用了過時的pre-commit版本,這可能會導致您的問題——因此我建議您進行升級


免責聲明:我創建了預提交

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM