gpt4 book ai didi

python - 如何让 mypy 识别较新版本的 python?

转载 作者:行者123 更新时间:2023-12-02 02:26:50 32 4
gpt4 key购买 nike

我刚刚将项目更新到 Python 3.7,当我在项目上运行 mypy 时,我看到此错误:错误:“Type[datetime]”没有属性“fromisoformat”

datetime 确实在 Python 3.7 中具有函数 fromisoformat,但在早期版本的 Python 中没有。为什么 mypy 报告此错误,如何让它正确分析 Python 3.7?

到目前为止我尝试过的事情:

  • 删除 .mypy_cache(其中有一个看起来可疑的标题为 3.6 的子文件夹)
  • 使用 pip install --upgrade --force-reinstall mypy 重新安装 mypy

重现:

  • 创建 python 3.6 项目

  • 在项目 venv 中安装 mypy 0.761(最新)

  • 使用 mypy 扫描项目 (mypy .)

  • 将项目更新到 python 3.7

  • 添加一个包含以下代码的文件:

    from datetime import datetime
    datetime.fromisoformat('2011-11-04 00:05:23.283')
  • 再次扫描项目 (mypy .) [更新:这实际上工作正常。它重新运行我的预提交 Hook ,而没有在新的 Python 版本 venv 上重新安装预提交,从而导致了问题。]

最佳答案

解决方案很简单:只需使用 --python-version 标志运行 mypy 即可。所以就我而言,它是 --python-version=3.7

如果您使用pre-commit ,您还可以将其添加为 .pre-commit-config.yaml 中的预提交检查中的参数。我的看起来像这样:

repos:

...

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.750 # Use the sha / tag you want to point at
hooks:
- id: mypy
args: [--python-version=3.7]

如果您经常从命令行运行 mypy,您还可以将其添加到配置文件中,如下所述 https://mypy.readthedocs.io/en/stable/config_file.html

另一个注意事项:如果 mypy 在预提交 Hook 运行时报告错误,但在项目 venv 中单独运行时则不报告错误,那么您需要

  • 像上面那样添加 python-version 作为参数,或者
  • 在新项目 venv 中重新安装预提交(使用正确的 python 版本)

关于python - 如何让 mypy 识别较新版本的 python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60459641/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com