Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't pip uninstall pysqlite?

I'm trying to remove pysqlite from my system using pip.

What I get doing so makes no sense:

$ pip uninstall pysqlite

The command worked, but watch this:

$ pip freeze
[...]
pysqlite==1.0.1

Let's try again

$ pip uninstall pysqlite
Can't uninstall 'pysqlite'. No files were found to uninstall.

Nop, seems removed but still show up in pip freeze

Now comes the fun

$ pip install pysqlite
Requirement already satisfied (use --upgrade to upgrade): pysqlite in /usr/lib/python2.6/dist-packages
Cleaning up...

Fair enough:

$ pip install -U pysqlite
[...]
error: command 'gcc' failed with exit status 1
[...]
Can't roll back pysqlite; was not uninstalled
[...]

I just don't get it. Why can't pip uninstall pysqlite?

like image 463
shkschneider Avatar asked Oct 30 '12 09:10

shkschneider


People also ask

How do I uninstall all pip packages?

To remove all packages installed by pip with Python, we run pip uninstall . to run pip freeze to get the list of packages installed. And then we pipe that to xargs pip uninstall -y to remove all the packages listed by pip freeze with pip uninstall . We use the -y to remove everything without needing confirmation.


3 Answers

Go to your /usr/lib/python2.6/site-packages/pysqlite*.egg/ (or anywhere else you store your eggs in your python path) and look for the installed-files.txt file.

If it does not exists, pip will not be able to uninstall it, if it does, you remove all the files within and you're rid of pysqlite. And as Martijn suggests, you should also check if you did not install your package with another package manager.

If you don't have the installed-files.txt, and your package has not been installed through a third-part package manager, you shall look up where your egg is, and remove it from the python path. Usually, eggs also write files in the directory where they lay, so you should look for a pysqlite/ directory in the directory where lays pysqlite.egg.

like image 160
zmo Avatar answered Oct 07 '22 16:10

zmo


For the record, I was able to upgrade a package I was having this issue with by using the --ignore-installed flag, e.g.

 pip install python-dateutil --upgrade --ignore-installed
like image 39
astrok Avatar answered Oct 07 '22 16:10

astrok


Just give another way.

I pip-installed ykdl which requires m3u8 and iso8601.

Then I wanted to uninstall them all, pip uninstall ykdl iso8601 m3u8.The ykdl and iso8601 were gone, but I couldn't uninstall the m3u8.And I saw it in pip list. I puzzled too.

Finally.When I tried to import m3u8, it failed and said 'needs iso8601'. So i installed iso8601, then uninstalled m3u8,iso8601 one by one. It worked

=====

It was on ubuntu. But on my Windows 10, I uninstalled iso8601 m3u8 ykdl step by step successfully. Exciting!

like image 42
f.BigBro Avatar answered Oct 07 '22 16:10

f.BigBro