How do I detect and remove Python packages installed via pip?
Ubuntu Oneiric (and I expect newer versions too) install pip packages to /usr/local/lib/python2.7/dist-packages
, and apt
packages to /usr/lib/python2.7/dist-packages
. So just check the former directory and sudo pip uninstall
every package you find there.
Pip currently ignores uninstall commands that try to uninstall something owned by the OS. It doesn't error out, like it does with a missing package. So, now you can uninstall with the following process:
pip freeze > dump.txt
Edit the dumped file to remove any -e
"editable install" lines, everything after the ==
sign (%s;==.*;;g
in vim), swap the new lines for spaces (%s;\n; ;g
in vim). Then you can uninstall all un-owned packages with
cat dump.txt | xargs sudo pip uninstall -y
I had to do this procedure twice, because a few packages were installed in ~/.local/lib
too.
A one-liner to accomplish this:
pip freeze | grep -vP '^(?:#|-e\s)' | sed 's;==.*;;g' | xargs -r sudo pip uninstall -y
AFAIK sudo pip install
will install on /usr/local/lib/pythonVERSION/dist-packages
. You need to run sudo pip uninstall
to uninstall packages system wide. It seems that pip freeze
looks for package metadata and will list anything installed i.e. both from pip as well as apt-get outside of virtualenvs. There is -l
option inside virtual environment to list packages only applicable to that virtual environment but it seems to be default case as well inside virtual environment. I think you can just delete related packages on /usr/local/lib/pythonVERSION/dist-packages
as well but not very convenient method I guess.