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