TypeError: attrib () obteve um argumento inesperado da palavra-chave 'convert'

55

Este erro ocorreu durante o teste automatizado de um projeto python no servidor de CI usando pytest. Estou usando pytest==4.0.2. Este erro apenas começou a ocorrer, os pipelines anteriores parecem funcionar bem.

O erro completo:

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'
agudo
fonte
Adicione seu código ou prepare um exemplo mínimo.
Artem Vovsia

Respostas:

97

pytestparece ter o pacote attrscomo uma dependência. attrs==19.2.0foi lançado por aí 2019-10-01 17:00 UTC. Isso parece causar o problema acima.

Voltar para attrs==19.1.0corrigir o problema. Faça o seguinte:

pip install attrs==19.1.0

NOTA : Espero que o problema seja resolvido por attrsou em pytestbreve, lançando uma nova versão. Portanto, essa correção deve ser apenas temporária.

UPDATE : Movendo o comentário para a resposta. Este erro não ocorre nas versões mais recentes do pytest, isto é,pytest==5.2.0

agudo
fonte
7
Confirmo que a melhor ação é atualizar pytestpara uma versão mais recente.
Guillaume Lebourgeois 04/10/19
2
Acho que falta um =sinal na fixação da versão. Deveria serpip install --upgrade attrs==19.1.0
logc 8/11/19
4

pytest versão 5.3.1 com attrs A versão 19.3.0 funciona bem para mim. [Para verificar a versão pytest e attrs Version, execute o seguinte comando:]

pip show pytest attrs

Resolvi o mesmo problema atualizando o módulo pytest via comando pip:

pip install -U pytest
iun1x
fonte