[Distutils] patch: solving the two major things that people dislike about setuptools, part 1

zooko zooko at zooko.com
Tue Nov 25 21:29:09 CET 2008


On Nov 24, 2008, at 15:46 PM, Mark Sienkiewicz wrote:
>
> We can eliminate __egginsert from the code entirely.  As far as I  
> can tell, the *only* purpose of __egginsert is to permit the  
> incorrect behaviour that your patch is intended to fix.

There are two separable concerns here:

1.  Should the act of "easy_install foodistribution" cause subsequent  
"python -c 'import foomodule'" to get the new, easy-installed foo,  
instead of the pre-existing, distutils-installed foo which is in the  
system directory?

2.  Should the act of "PYTHONPATH=./my-custom-foo" cause subsequent  
"python -c 'import foomodule'" to get the foo in ./my-custom-foo  
instead of the easy-installed foo?

PJE has already made clear (see references on the ticket that I filed  
or in my earlier mail) that he wants the answer to 1 to be "yes",  
because he is supporting a common use case in which a user doesn't  
know how to uninstall the old foo but wants to use easy_install to  
get a new foo.

(I personally am kind of ambivalent about #1, but I have no users  
asking for it to be different so I'm happy to go along with PJE on  
that.)

Issue #2 is actually the one that so many people hate about  
setuptools, including many of my current and prospective users, and  
apparently included you, Mark Sienkiewicz.

I think it is consistent to answer "yes" to both questions, because  
in each case the user has expressed intent -- by saying "easy_install  
foo", you can legitimately be understood as meaning "...and make the  
one I get over-ride any other ones that might already be here.".   
Likewise by saying "PYTHONPATH=./my-custom-foo", you are certainly  
saying "... and make the one I just named override any others".   
Indeed, the Python docs clearly state that Python will respect that  
statement of yours:

http://www.python.org/doc/2.5.2/inst/search-path.html

which says: "The PYTHONPATH variable can be set to a list of paths  
that will be added to the beginning of sys.path.".

My patch is intended to make the answer to #2 be "yes" from now on,  
while preserving the current behavior of the answer to #1 being "yes".

Regards,

Zooko
---
http://allmydata.org -- Tahoe, the Least-Authority Filesystem
http://allmydata.com -- back up all your files for $10/month


More information about the Distutils-SIG mailing list