Reputation: 1711
I tried to install the Twilio module:
sudo -H pip install twilio
And I got this error:
Installing collected packages: pyOpenSSL
Found existing installation: pyOpenSSL 0.13.1
Cannot uninstall 'pyOpenSSL'. 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.
Anyone know how to uninstall pyOpenSSL?
Upvotes: 139
Views: 281892
Reputation: 11
In my case, just delete the installed package in site-packages
, then reinstall this package. To find the path of site-packages
, you can try pip install package name
, the path for the specific path will be printed.
Upvotes: -1
Reputation: 1978
In my case, I was installing a package from internal git using the following command:
python -m pip install package.whl --force
I was doing this because I didn't want to explicitly uninstall the previous version and just replace it with a newer version. But what it also does is install all the dependencies again. I was getting the error in one of those packages. Removing --force
fixed the problem.
I want to add, having --ignore-installed
also worked for me. And removing --force
is essentially doing the same thing in my case.
Upvotes: 6
Reputation: 170
Reading the above comments, I understood that package a was installed with conda and the new package b that I was trying to install using pip was causing problems. I was lucky that package b had conda support so using conda to install package b solved the problem.
Upvotes: 3
Reputation: 2086
Generally, for similar errors, use this format:
pip install --ignore-installed [package name]==[package version]
Upvotes: 22
Reputation: 395
I just had this error and the only way I was able to resolve it was by manually deleting the offending directory from site-packages
.
After doing this you may need to reinstall the packages with --force-reinstall
.
Upvotes: 4
Reputation: 1295
I had the same error and was able to resolve using the following steps:
pip install --ignore-installed pyOpenSSL
This will install the package with latest version and then if you try to install,
pip install twilio
It will work.
Upvotes: 92
Reputation: 36008
This error means that this package's metadata doesn't include a list of files that belong to it. Most probably, you have installed this package via your OS' package manager, so you need to use that rather than pip
to update or remove it, too.
See e.g. Upgrading to pip 10: 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. · Issue #5247 · pypa/pip for one such example where the package was installed with apt
.
Alternatively, depending on your needs, it may be more productive to not use your system Python and/or its global environment but create a private Python installation and/or environment. There are many options here including virtualenv
, venv
, pyenv
, pipenv
and installing Python from source into
/usr/local
or $HOME
/$HOME/.local
(or /opt/<whatever>
).
Finally, I must comment on the often-suggested (e.g. at pip 10 and apt: how to avoid "Cannot uninstall X" errors for distutils packages) --ignore-installed
pip
switch.
It may work (potentially for a long enough time for your business needs), but may just as well break things on the system in unpredictable ways. One thing is sure: it makes the system's configuration unsupported and thus unmaintainable -- because you have essentially overwritten files from your distribution with some other arbitrary stuff. E.g.:
pip
-installed files, with similarly unpredictable results.Upvotes: 144