[Distutils] Twisted plugin system and Python packaging
P.J. Eby
pje at telecommunity.com
Sun Sep 25 05:01:44 CEST 2011
At 04:20 PM 9/21/2011 +0200, Tristan Seligmann wrote:
>If you include "twisted.plugins" in your setup.py, then this works
>fine with distutils "setup.py install" as well as "pip install";
>setuptools "setup.py install" will install everything into an egg,
>which will also work due to the way __path__ is set. However, since
>"twisted" ends up in top_files.txt in the egg-info, "pip uninstall"
>will blow away your whole Twisted install when uninstalling a
>project shipping Twisted plugins that was installed with "pip install".
This really sounds like a bug in pip; top_level.txt is not a
replacement for a proper uninstall log.
>So, how should Twisted and Twisted-related projects be packaged in
>order to avoid these issues? Please bear in mind that the current
>plugin system in Twisted was first introduced around March 2005
>(replacing the even older plugin system in use at the time, I
>believe), thus there are quite a number of users relying on this
>code; any changes would need to be backwards-compatible to avoid
>causing problems for all of the existing projects and users relying
>on the functionality.
I think you've answered your own question here: there *isn't* any way
to package Twisted-related projects in a way that avoids the issue,
due to the bug in pip. It's not Twisted's fault that pip takes shortcuts here.
More information about the Distutils-SIG
mailing list