我將此添加到 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。
我在這里缺少什么嗎?謝謝你的幫助
uj5u.com熱心網友回復:
預提交的一點是它在隔離環境中安裝工具,因此它們不會干擾您當前的開發環境所處的任何狀態——language: python告訴預提交創建自己的pythonvirtualenv
如果您不希望可以使用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]
再次注意 pre-commit 不會從被測存盤庫中安裝(如果安裝了,快取將難以處理),因此您不能使用-r requirements.txtin 之類的additional_dependencies東西
免責宣告:我創建了預提交
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419597.html
標籤:
