繁体   English   中英

预提交不使用虚拟环境

[英]pre-commit not using virtual environment

我将此添加到pre-commit-config.yml

-   repo: local
    hooks:
    -   id: python-hook
        name: python-hook
        entry: python python_script.py
        language: python
        pass_filenames: false

其中python_script.py有以下内容

#!/usr/bin/env python

import os

print(os.environ["VIRTUAL_ENV"])

import requests

package requests安装在活动虚拟环境中,当我运行预提交时,我得到这个 output

/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7
Traceback (most recent call last):
  File "python_script.py", line 7, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

这里的问题是虚拟环境的路径显然已切换到另一个/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7

我在这里缺少什么吗? 谢谢你的帮助

预提交的一点是它在隔离环境中安装工具,因此它们不会干扰您当前的开发环境所在的 state -- language: python告诉预提交创建自己的python

如果你不想这样,你可以使用language: system ——但是当你不想要托管工具时,这是不受支持的逃生舱口(请注意,预提交不会为你的贡献者提供这些环境,所以他们会需要确保他们设置并激活了特定的环境)

更好的方法是声明local钩子需要预先提交的依赖项,以便它可以使用additional_dependencies为您提供环境——例如,如果您需要在工具中packaging

repos:
-   repo: local
    hooks:
    -   id: python-hook
        name: python-hook
        entry: python python_script.py
        language: python
        pass_filenames: false
        additional_dependencies: [packaging]

再次注意,预提交不会从被测存储库中安装(如果这样做,缓存将难以处理),因此您不能在additional_dependencies依赖项中使用-r requirements.txt之类的东西)


免责声明:我创建了预提交

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM