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的配置有关...
4 个回答
#1楼
已采纳
得票数 41
将hook升级到刚发布的isort 5.12.0,似乎可以解决这个问题了。
从isort repo看提交堆栈,听起来最近的Poetry版本有一个与isort <= 5.11.4不兼容的破坏性变化(commit)。
有没有可能在预提交中冻结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-1561600633
- bagerard 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
#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"
#4楼
得票数 1
在我的机器上,运行pre-commit autoupdate
就足以解决这个问题。
这将把isort
中的版本更新为.pre-commit-config.yaml
中的5.12.0+,以及所有其他预提交的工具。