Почему не удается выполнить команду pip3 install netifaces в Debian 10 Buster?

Я установил новый экземпляр Debian 10 (Buster) на AWS EC2 и смог установить пакет pip3, который зависел от netifaces, но когда я вернулся к нему на следующий день, пакет не работает, сообщает об ошибке в netifaces. Если я попытаюсь запустить pip3 install netifaces, я получу ту же ошибку:

~$ pip3 install netifaces
Collecting netifaces
  Using cached https://files.pythonhosted.org/packages/0d/18/fd6e9c71a35b67a73160ec80a49da63d1eed2d2055054cc2995714949132/netifaces-0.10.9.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 20, in <module>
        from setuptools.dist import Distribution, Feature
      File "/usr/lib/python3/dist-packages/setuptools/dist.py", line 35, in <module>
        from setuptools.depends import Require
      File "/usr/lib/python3/dist-packages/setuptools/depends.py", line 7, in <module>
        from .py33compat import Bytecode
      File "/usr/lib/python3/dist-packages/setuptools/py33compat.py", line 55, in <module>
        unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)
    AttributeError: 'HTMLParser' object has no attribute 'unescape'

4 ответа

Решение

HTMLParser().unescapeбыл удален в Python 3.9. Сравните код в Python 3.8 против Python 3.9.

Ошибка кажется ошибкой в setuptools. Попробуйте обновить setuptools. Или используйте Python 3.8.

Я столкнулся с этой проблемой в PyCharm 2018. Помимо обновления setuptools как упоминалось выше, мне также пришлось перейти на PyCharm 2020.3.4чтобы решить эту проблему. Связанная ошибка в системе отслеживания проблем PyCharm: https://youtrack.jetbrains.com/issue/PY-39579

Надеюсь, это поможет кому-то не тратить часы на отладку.

У меня был python3.6 и связанные с ним пакеты через управление deb. Нужен python3.9 для стороннего проекта и решение для исправления pip и AttributeError: 'HTMLParser' object has no attribute 'unescape'было обновить pip для python3.9 локально для одного пользователя:

      python3.9 -m pip install --upgrade pip

теперь установка версии python3.9 pip-пакетов работает:

      python3.9 -m pip install --target=~/.local/lib/python3.9/site-packages numpy

Переход на любую более старую версию python3 не является решением, и в большинстве случаев обновление setuptools не решает проблему. Правильным решением, которое помогло мне работать с pip с использованием python3.9, является следующее в Ubuntu18: найдите /usr/lib/python3/dist-packages/setuptools/py33compact.py33 и измените

      # unescape = getattr(html, 'unescape', html_parser.HTMLParser().unescape)  # comment out this line
unescape = getattr(html, 'unescape', None)
if unescape is None:
    # HTMLParser.unescape is deprecated since Python 3.4, and will be removed
    # from 3.9.
    unescape = html_parser.HTMLParser().unescape
Другие вопросы по тегам