簡體   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