类型错误:__init__() 得到意外的关键字参数“as_tuple”

haz*_*lak 35 python testing flask

当我测试 API 时,我最近开始收到以下错误。

        if request is None:
>           builder = EnvironBuilder(*args, **kwargs)
E           TypeError: __init__() got an unexpected keyword argument 'as_tuple'

/usr/local/lib/python3.7/site-packages/werkzeug/test.py:1081: TypeError
Run Code Online (Sandbox Code Playgroud)

正如我从新版本的文档中读到的,Werkzeugas_tuple参数已被删除。

我的测试代码的一部分是

        if request is None:
>           builder = EnvironBuilder(*args, **kwargs)
E           TypeError: __init__() got an unexpected keyword argument 'as_tuple'

/usr/local/lib/python3.7/site-packages/werkzeug/test.py:1081: TypeError
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

Chr*_*nzo 47

从版本 2.1.0 开始,werkzeug已删除as_tuple的参数Client。由于 Flask 包装了 werkzeug 并且您使用的版本仍然通过此参数,因此它将失败。请参阅此处 GitHub PR 上的确切更改

您可以采取以下两种途径之一来解决此问题:

  1. 升级烧瓶

  2. 固定您的 werkzeug 版本

# in requirements.txt
werkzeug==2.0.3
Run Code Online (Sandbox Code Playgroud)


小智 16

添加克里斯蒂安·迪·洛伦佐的答案

  1. 升级烧瓶
# in requirements.txt
Flask==2.1.1
Run Code Online (Sandbox Code Playgroud)
  1. 固定您的 werkzeug 版本
# in requirements.txt
werkzeug==2.0.3
Run Code Online (Sandbox Code Playgroud)