首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mypy在运行django-reset-framework的预提交时会抛出错误?

为什么mypy在运行django-reset-framework的预提交时会抛出错误?
EN

Stack Overflow用户
提问于 2021-07-12 03:16:57
回答 1查看 571关注 0票数 0

我正在尝试自动化我的测试和代码静态分析。我的.pre-commit-config.yaml如下所示:

代码语言:javascript
复制
# .
# .
# .
- repo: https://github.com/pre-commit/mirrors-mypy
    rev: 'v0.910'
    hooks:
      - id: mypy
        args: [--no-strict-optional, --ignore-missing-imports]
        exclude: "[a-zA-Z]*/[a-zA-Z]*/(migrations)/(.)*"
        additional_dependencies: [
            'tokenize-rt,
            'djangorestframework-stubs',
            'django-stubs',
        ]

pyproject.toml为:

代码语言:javascript
复制
[tool.mypy]
python_version = "3.8"
plugins = ["mypy_django_plugin.main", "mypy_drf_plugin.main"]

[mypy.plugins.django-stubs]
django_settings_module = "api.shop.shop.settings"

当我运行pre-commit run --all-files时,我得到以下错误:

代码语言:javascript
复制
Error constructing plugin instance of NewSemanalDjangoPlugin

Traceback (most recent call last):
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/mypy/__main__.py", line 11, in console_entry
    main(None, sys.stdout, sys.stderr)
  File "mypy/main.py", line 87, in main
  File "mypy/main.py", line 165, in run_build
  File "mypy/build.py", line 179, in build
  File "mypy/build.py", line 229, in _build
  File "mypy/build.py", line 475, in load_plugins
  File "mypy/build.py", line 453, in load_plugins_from_config
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/mypy_django_plugin/main.py", line 104, in __init__
    self.django_context = DjangoContext(django_settings_module)
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/mypy_django_plugin/django/context.py", line 88, in __init__
    apps, settings = initialize_django(self.django_settings_module)
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/mypy_django_plugin/django/context.py", line 72, in initialize_django
    apps.populate(settings.INSTALLED_APPS)
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/home/alipqb/.cache/pre-commit/repo94ds7xs0/py_env-python3.8/lib/python3.8/site-packages/django/apps/config.py", line 224, in create
    import_module(entry)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'rest_framework'

但是我已经在我的环境中安装了djangoresetframeworkdjangorestframework-stubs。这里的问题是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-07-12 03:44:27

pre-commit在隔离环境中运行其工具,您可以控制依赖关系(正如您已经看到的,它似乎(!))从mirrors-mypy readme中声明的additional_dependencies

看起来mypy_django_plugin缺少依赖项--值得注意的是,它尝试导入djangorest-framework,因此您需要确保在additional_dependencies中包含这些依赖项

请注意,您不需要tokenize-rt --这只是自述文件中的一个示例,因此您可以删除它

免责声明:我创建了预提交

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68339307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档