sphoenix
sphoenix

Reputation: 3627

How to upgrade disutils package PyYAML?

I was trying to install chatterbot which has a dependency on PyYAML=3.12. In my Ubuntu machine installed PyYAML version is 3.11. So I used the following command to upgrade PyYAML:

sudo -H pip3 install --upgrade PyYAML

But it gives the following error:

Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

My pip3 version is 10.0.0.

How to resolve this?

Upvotes: 116

Views: 185368

Answers (9)

sphoenix
sphoenix

Reputation: 3627

I found in this Github issue that pip 10 no longer uninstalls distutils packages. So I downgraded to pip 8.1.1. And now it works.

And to downgrade pip, I used the following:

sudo -H pip3 install pip==8.1.1

Upvotes: 31

mehboob sayyed
mehboob sayyed

Reputation: 801

You can try this:

pip install --ignore-installed PyYAML

Upvotes: 80

Mayur Maheshwari
Mayur Maheshwari

Reputation: 9

The following code will help:

rm -rf /usr/lib/python3/dist-packages/yaml
rm -rf /usr/lib/python3/dist-packages/PyYAML-*
rm -rf /usr/lib/python3.8/site-packages/PyYAML-*
sudo -H pip3 install --ignore-installed PyYAML

Upvotes: 0

XxX
XxX

Reputation: 124

If --ignore-installed is NOT the case for you, and you are running Debian/Ubuntu, then you can try following solution.

PyYAML could possibly be installed with apt, as a dependency of another package.

To debug that:

  1. Detect a package name: run apt list --installed | grep python and search for any yaml occurrence.
  2. Let's say, you've detected a package python3-yaml.
  3. Search for reverse dependencies: apt-cache rdepends --installed python3-yaml

Then you can:

  • either delete unused reverse deps along with python3-yaml
  • or delete python3-yaml via dpkg -r --force-depends python3-yaml and re-install it via pip
  • or make a decision on your own and share results in comments

Upvotes: 1

Buddhadeb Mondal
Buddhadeb Mondal

Reputation: 175

conda remove PyYAML

conda remove will take time

pip install chatterbot
pip install chatterbot_corpus

In this way it sloved my error while I was trying from chatterbot import chatbot

Upvotes: 5

Christopher Howlin
Christopher Howlin

Reputation: 701

I have had a similar issue where the PyYAML package was installed by conda. There is another answer to use conda remove.

Instead I have got round this issue using conda update PyYAML, effectively using conda to update the dependency which pip is trying itself to update.

Upvotes: 3

Baptiste Florentin
Baptiste Florentin

Reputation: 151

I personnaly had PyYAML installed on anaconda, just executing 'conda remove PyYAML' and then executing my pip command worked.

Upvotes: 6

Jinna Baalu
Jinna Baalu

Reputation: 7839

Issue:

Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Solution : Remove Dist Package and RUN

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

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

Removing folder from distutils works

Upvotes: 13

Fenhl
Fenhl

Reputation: 2442

Try using the --ignore-installed flag:

sudo -H pip3 install --ignore-installed PyYAML

This works because to upgrade a package, pip first uninstalls the old version, then installs the new version. It is the uninstall step that fails for distutils packages. With the --ignore-installed flag, the uninstall step is skipped and the new version is simply installed on top of the old one.

Upvotes: 198

Related Questions