TypeError:attrib() 得到了一个意外的关键字参数“convert”

Posted

技术标签:

【中文标题】TypeError:attrib() 得到了一个意外的关键字参数“convert”【英文标题】:TypeError: attrib() got an unexpected keyword argument 'convert' 【发布时间】:2020-01-31 00:49:51 【问题描述】:

在使用 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'

【问题讨论】:

请添加您的代码或准备最小示例。 【参考方案1】:

pytest 似乎将包 attrs 作为依赖项。 attrs==19.2.0 是在 2019-10-01 17:00 UTC 周围发布的。这似乎导致了上述问题。

切换回attrs==19.1.0 可以解决问题。只需执行以下操作:

pip install attrs==19.1.0

注意:我希望通过发布新版本,attrspytest 很快就会解决此问题。所以这个修复应该只是暂时的。

更新:将评论移到答案中。此错误不会出现在较新版本的 pytest 上,即pytest==5.2.0

【讨论】:

我确认,最好的做法是将pytest 更新到更新的版本。 我认为版本固定中缺少= 标志。应该是pip install --upgrade attrs==19.1.0 我确认这是我必须手动安装的意外依赖项。【参考方案2】:

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

【讨论】:

【参考方案3】:

带有 attrs 版本 19.3.0 的 pytest 版本 5.3.1 对我来说很好。 [要检查 pytest 版本和 attrs 版本,请发出以下命令:]

pip show pytest attrs

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

pip install -U pytest

【讨论】:

【参考方案4】:
python -m pip install --upgrade pytest

(anaconda 提示符或 cmd)

这应该可以解决您的问题,因为 pytest 的更新版本会自动处理 attr 问题。

【讨论】:

【参考方案5】:

我对@9​​87654323@ 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 错误:https://github.com/aws/aws-cdk/issues/3293

【讨论】:

【参考方案6】:

只需使用命令

conda update conda

然后重启你的系统。

【讨论】:

以上是关于TypeError:attrib() 得到了一个意外的关键字参数“convert”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: __init__() 得到了一个意外的关键字参数“评分”

Python TypeError:reduce_noise() 得到了一个意外的关键字

TypeError: scatter() 得到了一个意外的关键字参数“trendline_options”(Plotly,Python)

TypeError: plot_confusion_matrix() 得到了一个意外的关键字参数“标题”

TypeError: __init__() 得到了一个意外的关键字参数“重新引用”

TypeError: __init__() 得到了一个意外的关键字参数“编码”