我使用pyenv来支持不同版本的python
在使用python3.7的项目中,我还希望在进行代码更改时运行pre-commit的linting
但是当lint规则运行时,pre-commit似乎在用户下的缓存文件夹中查找python包,因此无法找到它们。。即使它们安装在系统级。例如:
>git ci -m'lint test'
...
...
/Users/[]/.cache/pre-commit/repo180cws4u/py_env-python3.7/lib/python3.7/site-packages/
...
ModuleNotFoundError: No module named 'six'
>pip list | grep six
six 1.11.0
我怎样才能解决这个问题。(一位同事通过运行/Users/[]/.cache/pre-commit/repo180cws4u/bin/python install -m six
解决了问题,但感觉不对..必须可以配置为使用系统包或类似
pre-commit为每个工具安装隔离的环境,这样它们就不会干扰本地开发。听起来您在该环境中缺少依赖项
在缓存环境中运行
pip install
是不受支持的,这样做可能会破坏预提交。它们是有意的私有实现细节,所以您不会弄乱它们您有两个主要选择:
使脚本独立工作(受支持的方式)
设置您的工具,以便它们正确地指定它们的依赖关系(您还没有显示配置,但我猜您正在调用一些脚本?)
对于已安装的存储库,应在安装元数据中列出工具的依赖项(通常为
setup.py
/setup.cfg
/pyproject.toml
)例如,
pre-commit/pre-commit-hooks
指定these dependencies:对于具有
language: python
的local
存储库,您应该在additional_dependencies
中指定依赖项,例如:存储库本地挂钩(逃生舱)
对于
language: system
/language: script
,预提交不提供环境。建立这样的环境是每个用户的责任。这些都是正常方式的逃生舱,因为它们首先有点违背了框架的目的(即提供自己所需的工具,而每个开发人员都不需要仔细管理一堆工具)对于^{} ,您应该使用
language: system
,如果用户的环境配置错误,希望您的脚本生成有用的错误消息免责声明:我创建了预提交
相关问题 更多 >
编程相关推荐