预先提交不使用虚拟环境
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
包 requests
安装在活动虚拟环境中,当我 运行 预提交时我得到这个输出
/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
。
我在这里遗漏了什么吗?感谢您的帮助
pre-commit 的一点是它在隔离环境中安装工具,因此它们不会干扰您当前开发环境所处的任何状态 -- language: python
告诉 pre-commit 创建自己的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
之类的东西)
免责声明:我创建了预提交
我将此添加到 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
包 requests
安装在活动虚拟环境中,当我 运行 预提交时我得到这个输出
/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
。
我在这里遗漏了什么吗?感谢您的帮助
pre-commit 的一点是它在隔离环境中安装工具,因此它们不会干扰您当前开发环境所处的任何状态 -- language: python
告诉 pre-commit 创建自己的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
之类的东西)
免责声明:我创建了预提交