At 10:56 AM 11/25/2008 -0500, Mark Sienkiewicz wrote:
>I think the correct behaviour is to insert the .egg file either
just before or just after the directory where we found the .pth file.
>
>So, instead of
>p=getattr(sys,'__egginsert',len(os.environ.get('PYTHONPATH','').spl
it(os.pathsep)));
>
>we want
>p=sys.path.index(sitedir);
>
Does this meet your criterion without breaking anything else?
The principle is correct; I'm not sure the implementation is. For
case-insensitive filesystems, sitedir may or may not be normalized,
and sys.path probably isn't. But yes, that's the general idea.
The only reason I didn't take that approach myself is because my head
hurt trying to come up with a provably-correct way to implement this
policy. ;-)
IMHO, this is actually not a great patch because it depends on
knowledge that should be private to distutils, but setuptools is
already violating that information hiding. (For example, it assumes
that it is safe to alter sys.path while distutils is loading the
.pth file; I didn't see that documented anywhere, but we can see
that it works.)
b.t.w. You could make easy_install.pth read:
import setuptools; setuptools.prep_sys_path()
module-name.egg
import setuptools; setuptools.alter_sys_path()
and then patches to the first/last line would be easier -- they
would just happen when you install a new setuptools.
It would have to be a separate module, added just for this
purpose... and of course it would introduce a runtime dependency
that would otherwise be unnecessary.
_______________________________________________
Distutils-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/distutils-sig