[英]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.