TypeError: attrib() получил неожиданный аргумент ключевого слова 'convert'
Эта ошибка произошла во время автоматического тестирования проекта python на CI-сервере с использованием pytest
. Я использую 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
ПРИМЕЧАНИЕ: Я ожидаю, что проблема будет решена либо attrs
, либо pytest
в скором времени путем выпуска новой версии. Так что это исправление должно быть только временным.
ОБНОВЛЕНИЕ: перемещение комментария в ответ. Эта ошибка не возникает в более новых версиях pytest, т.е. pytest==5.2.0
Ответ 2
исправление pytest с использованием устаревшего ключевого слова convert
в 3.6.3 (https://docs.pytest.org/en/latest/changelog.html#pytest-3-6-3-2018-07-04).
В версии 4.0.1 код Pytest объединился с использованием convert
(https://github.com/pytest-dev/pytest/pull/4427).
Этот код был исправлен на 5.2.0 (https://github.com/pytest-dev/pytest/pull/4795).