今天在运行pre-commit的时候出现了下面的错误:

INFO] Installing environment for https://github.com/Lucas-C/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: Command: ('/root/.cache/pre-commit/repo2ipbsuzs/py_env-python3.7/bin/python', '/root/.cache/pre-commit/repo2ipbsuzs/py_env-python3.7/bin/pip', 'install', '.')
Return code: 1
Expected return code: 0
Output: 
    Processing /root/.cache/pre-commit/repo2ipbsuzs
      Preparing metadata (setup.py): started
      Preparing metadata (setup.py): finished with status 'error'
    
Errors: 
      error: subprocess-exited-with-error
      
      × python setup.py egg_info did not run successfully.
      │ exit code: 1
      ╰─> [38 lines of output]
          Traceback (most recent call last):
            File "/root/.cache/pre-commit/repo2ipbsuzs/py_env-python3.7/lib/python3.7/site-packages/setuptools/_vendor/importlib_metadata/_compat.py", line 9, in <module>
              from typing import Protocol
          ImportError: cannot import name 'Protocol' from 'typing' (/usr/local/python3.7.0/lib/python3.7/typing.py)
          
          During handling of the above exception, another exception occurred:
          ......

我的环境是python 3.7.5

解决方法

查资料说 it should work since Python 3.8, try updating.
于是升级成python3.8:

conda create -n py38 python=3.8
conda activate py38

然后在虚拟的python3.8的环境里面pre-commit,然后就不报错了。

参考文献

can not import Protocol from typing

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐