Почему не удается выполнить команду 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