Как обновить пакет disutils PyYAML?

Я пытался установить chatterbot, который имеет зависимость от PyYAML = 3.12. На моей машине Ubuntu версия PyYAML - 3.11. Поэтому я использовал следующую команду для обновления PyYAML:

sudo -H pip3 install --upgrade PyYAML

Но это приводит к следующей ошибке:

Не удается удалить "PyYAML". Это проект, установленный на distutils, и поэтому мы не можем точно определить, какие файлы принадлежат ему, что приведет к частичной деинсталляции.

Моя PIP3 версия 10.0.0.

Как это решить?

Ответ 1

Я нашел в этой проблеме Github, что pip 10 больше не удаляет пакеты distutils. Поэтому я понизился до пункта 8.1.1. И теперь это работает.

Если кто-нибудь, кто просматривает этот вопрос, знает, как удалить или обновить пакет distutils с помощью pip 10.0.0, пожалуйста, дайте мне знать здесь. :)

(Если кому-то нужно)
И чтобы понизить пип, я использовал следующее:

sudo -H pip3 install pip==8.1.1

Ответ 2

Попробуйте использовать флаг --ignore-installed:

sudo -H pip3 install --ignore-installed PyYAML

Это работает, потому что для обновления пакета pip сначала удаляет старую версию, а затем устанавливает новую версию. Это шаг деинсталляции для пакетов distutils. При --ignore-installed флаге --ignore-installed этап удаления пропускается, и новая версия просто устанавливается поверх старой.

Ответ 3

Выпуск:

Невозможно удалить PyYAML. Это установленный дистрибутивный проект, и поэтому мы не можем точно определить, какие файлы принадлежат ему, что приведет только к частичному удалению.

Решение: удалить пакет Dist и запустить

sudo rm -rf/usr/lib/python3/dist-packages/yaml

sudo rm -rf/usr/lib/python3/dist-packages/PyYAML-*

Удаление папки из distutils работает

Ответ 4

Я лично установил PyYAML на Anaconda, просто выполнив 'conda remove PyYAML', а затем выполнив мою команду pip.

Ответ 5

Вы можете попробовать это:

$pip install --ignore-installed PyYAML