pre-commit在安装isort 5.11.4时失败,出现错误"RuntimeError: The Poetry configuration is invalid"

回答 4 浏览 4009 2023-01-28

pre-commit今天在我们的构建中突然开始无法安装isort钩子,并出现了以下错误

[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: command: ('/builds/.../.cache/pre-commit/repo0_h0f938/py_env-python3.8/bin/python', '-mpip', 'install', '.')
return code: 1
expected return code: 0
[...]
stderr:
      ERROR: Command errored out with exit status 1:
[...]
        File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/masonry/api.py", line 40, in prepare_metadata_for_build_wheel
          poetry = Factory().create_poetry(Path(".").resolve(), with_groups=False)
        File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/factory.py", line 57, in create_poetry
          raise RuntimeError("The Poetry configuration is invalid:\n" + message)
      RuntimeError: The Poetry configuration is invalid:
        - [extras.pipfile_deprecated_finder.2] 'pip-shims<=0.3.4' does not match '^[a-zA-Z-_.0-9]+$'

这似乎与poetry的配置有关...

bagerard 提问于2023-01-28
4 个回答
#1楼 已采纳
得票数 41

将hook升级到刚发布的isort 5.12.0,似乎可以解决这个问题了。

从isort repo看提交堆栈,听起来最近的Poetry版本有一个与isort <= 5.11.4不兼容的破坏性变化(commit)。

bagerard 提问于2023-01-28
有没有可能在预提交中冻结Poetry的版本?Jirka 2023-01-30
@bagerard"显然没有"但我告诉你到底是怎么做的? 请不要把话说到我的嘴里。anthony sottile 2023-01-30
对不起,我只是想帮忙,但我确实太快阅读了github问题。无论如何,我删除了评论以避免混淆。在这里重新链接Github关于pre-commit中冻结poetry的问题,因为提到它仍然很好--> github.com/pre-commit/pre-commit/issues/2730#issue-1561600633bagerard 2023-01-30
几天前升级到isort 5.12.0确实解决了这个问题,但昨天突然又出现了。我使用的是Python 3.10.9。Salma Hassan 2023-02-06
奇怪的是,在我们的案例中,它没有重新出现bagerard 2023-02-06
#2楼
得票数 10

补充说明:对于必须使用python3.7的人(isort 5.12.0 不再支持),isort发布了hotfix5.11.5

https://github.com/PyCQA/isort/releases/tag/5.11.5

5.11.5 January 30 2023 [hotfix]

Fixed incompatiblity with latest poetry version

与之相关的isort问题。https://github.com/PyCQA/isort/issues/2083#issuecomment-1408300628

zerocewl 提问于2023-01-31
vvvvv 修改于2023-02-13
#3楼
得票数 3

对这个帖子进行补充,因为又花了一些东西让我的系统运作起来......

项目的修复

.pre-commit-config.yaml基于docs的内容

- repo: https://github.com/pycqa/isort
  rev: 5.12.0
  hooks:
  - id: isort
    args: ['--order-by-type', '--length-sort', "--profile", "black", "--filter-files"]
    name: isort (python)
  - id: isort
    name: isort (cython)
    types: [cython]
  - id: isort
    name: isort (pyi)
    types: [pyi]

pin特定的poetry-core版本(isort问题 & 热修复)。

[build-system]
requires = ["poetry-core>=1.3.2"]
build-backend = "poetry.core.masonry.api"

系统的修复

卸载/重新安装poetry 使用官方安装程序

uninstall

curl -sSL https://install.python-poetry.org | python3 - --uninstall
curl -sSL https://install.python-poetry.org | POETRY_UNINSTALL=1 python3 -

检查.zshrc,并通过cat ~/.zshrc | grep poetry删除其他poetry的实例

install

curl -sSL https://install.python-poetry.org | python3 -
echo 'export PATH="/Users/willcasswrig/.local/bin:$PATH"' >> "$HOME/.zshrc"
will-wright-eng 提问于2023-02-06
will-wright-eng 修改于2023-02-06
#4楼
得票数 1

在我的机器上,运行pre-commit autoupdate就足以解决这个问题。

这将把isort中的版本更新为.pre-commit-config.yaml中的5.12.0+,以及所有其他预提交的工具。

Aleksei Petrenko 提问于2023-02-08