TypeError: Attrib()得到了一个意想不到的关键字参数‘ Convert’

此错误发生在使用 pytest在 CI 服务器上自动测试 python 项目期间。我用的是 pytest==4.0.2。这个错误才刚刚开始发生,以前的管道似乎工作得很好。

完全错误:

File "/usr/local/lib/python3.7/site-packages/_pytest/tmpdir.py", line 35, in TempPathFactory
lambda p: Path(os.path.abspath(six.text_type(p)))
TypeError: attrib() got an unexpected keyword argument 'convert'
30496 次浏览

pytest似乎将包 attrs作为一个依赖项。attrs==19.2.02019-10-01 17:00 UTC附近释放。这似乎引起了上面的问题。

切换回 attrs==19.1.0可以解决这个问题:

pip install attrs==19.1.0

注意 : 我希望这个问题能够通过 attrs或者 pytest通过发布一个新版本很快得到解决。所以这个修复应该只是临时的。

更新 : 将注释移动到答案中。这个错误不会发生在更新版本的 pytest 中,即 pytest==5.2.0

使用废弃的关键字 convert在3.6.3(https://docs.pytest.org/en/latest/changelog.html#pytest-3-6-3-2018-07-04)修复 pytest。 在4.0.1时,pytest 使用 convert(https://github.com/pytest-dev/pytest/pull/4427)合并代码。 这段代码固定在5.2.0(https://github.com/pytest-dev/pytest/pull/4795)上。

Pytest 版本5.3.1和 attrs 版本19.3.0非常适合我。 [要检查 pytest Version 和 attrs Version,请发出以下命令: ]

pip show pytest attrs

我通过 pip 命令升级 pytest 模块解决了同样的问题:

pip install -U pytest

只需要使用命令

conda update conda

重启你的系统。

我在 aws-encryption-cli v2中也有同样的错误。 我已经更新了我的 aws-cdk.core库,它再次与迁移到 aws-encryption-cli V2工作。

pip install -U aws-cdk.core

V2文档: https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/crypto-cli-examples.html#cli-example-encrypt-file

Github bug: https://github.com/aws/aws-cdk/issues/3293

python -m pip install --upgrade pytest

(蟒蛇提示或 cmd)

这将解决您的问题,因为 pytest 的更新版本将自动处理 attr 问题。

问题是 attrs==19.2.0删除了 convert属性(来源)。

attr.ib(convert=int)应该被弃用,代之以 attr.ib(converter=int)

您要么需要更新正在使用 attrs 的内容,要么需要降级: pip install 'attrs<19.2.0'