Django-导入错误:无法为API设置导入"drf_yasg. generators. OpenAPISchemaGenerator"

k4ymrczo  于 2023-01-27  发布在  Go
关注(0)|答案(4)|浏览(340)

我尝试将https://github.com/axnsan12/drf-yasg这个库添加到我们的django应用程序中,并得到下面的错误。

permission_classes=(permissions.AllowAny,),
  File "/env/lib/python3.7/site-packages/drf_yasg/views.py", line 67, in get_schema_view
    _generator_class = generator_class or swagger_settings.DEFAULT_GENERATOR_CLASS
  File "env/lib/python3.7/site-packages/drf_yasg/app_settings.py", line 122, in __getattr__
    val = perform_import(val, attr)
  File "env/lib/python3.7/site-packages/rest_framework/settings.py", line 166, in perform_import
    return import_from_string(val, setting_name)
  File "env/lib/python3.7/site-packages/rest_framework/settings.py", line 180, in import_from_string
    raise ImportError(msg)
ImportError: Could not import 'drf_yasg.generators.OpenAPISchemaGenerator' for API setting 'DEFAULT_GENERATOR_CLASS'. ImportError: cannot import name 'URLPattern' from 'rest_framework.compat' (env/lib/python3.7/site-packages/rest_framework/compat.py).

经过一番研究,我发现有些人建议安装这个软件包来解决这个问题

pip3 install packaging

但是这并没有什么不同,还有其他好的API文档库可以用于djangorestapi吗?

hjzp0vay

hjzp0vay1#

更新

此问题已在drf-yasg==1.20.0--(Release notes)中修复,因此您可以通过以下方式升级到最新版本

pip install drf-yasg -U

原始答案

drf-yasg-(#641)中有一个未决问题需要解决。遗憾的是,鉴于自2020年2月以来没有任何活动,该项目已不再维护(参考此)。
但是,@JoelLefkowitz创建了该项目的一个分支,它在名为drf-yasg2的文件中可用,该文件已修复OP的问题。
您需要做的是从drf-yasg迁移到drf-yasg2--(ReadTheDoc)
安装

pip install drf-yasg2

并将其添加到**INSTALLED_APPS**部分

INSTALLED_APPS = [
      ...
      'drf_yasg2',
      ...
   ]
whhtz7ly

whhtz7ly2#

看起来DRF从3.12版本开始就没有rest_framework.compat.URLPattern,并且drf-yasg还没有赶上这一点。请确保您的DRF版本低于3.12。例如:pip install djangorestframework==3.11.2

roejwanj

roejwanj3#

它肯定可以帮助你们settings.py文件中编写以下内容:

型锻设置= {“默认发生器等级”:“rest_framework.架构.生成器.基本架构生成器”,}

vc6uscn9

vc6uscn94#

管道安装drf-yasg -U
∮这对我有用∮

相关问题