When I run the command pip list on my computer (windows 10), at the very top of the list are some packages whose name starts with a hyphen. For example:
-ip
-atplotlib
In my site-packages directory, I can find folders with the same names, but a tilde instead of a hyphen.
Furthermore, they appear to have the same files in them as packages that sound similar (in the above examples, pip and matplotlib, respectively).
What are these packages and should I delete them off of my computer?
When uninstalling a package, pip will now rename it in place to a name that cannot be imported, and once it has confirmed that everything will succeed (including installing new versions if it’s doing an upgrade), only then will it delete those folders. If something fails, it renames them back.
Previously, it would copy the entire contents to another directory, and potentially another drive, and then copy them back if it needed. So this change is a significant performance improvement, especially for packages with a lot of files in them.
What you’re seeing here is that the deletion failed for some reason - perhaps pip crashed? - and so the directories were not removed. I thought pip ignored them completely, but perhaps something else changed since I tested that?
I dug into this when it first came up. From what I could figure, the problem is that pkg_resources looks for .dist-info directories in sys.path. Any dist-info directory is identified as an installed distribution (thus listed by pip list), with the directory name parsed as distribution name (thus the dash-prefixed display).
I must admit there are (quite many) parts of pkg_resources I couldn’t fully figure out. Maybe this is another sign we should work on State of importlib.metadata - #7 by barry