[SciPy-dev] weave.inline broken by setuptools?

Fernando Perez fperez.net at gmail.com
Fri Sep 26 05:01:32 EDT 2008


On Fri, Sep 26, 2008 at 1:37 AM, David Cournapeau
<david at ar.media.kyoto-u.ac.jp> wrote:
> Fernando Perez wrote:
>>
>> It may well be that there are reasons why setuptools can't avoid to
>> monkeypatch, I don't know.  But it seems to me that this particular
>> issue stems from the monkeypatching and  not because of subclassing.
>
> Yes, it is because of monkeypatching, but setuptools needs to monkey
> patch Distribution to handle some things with eggs at least (and
> possibly other things which I am not aware of).

Thanks for the info, that was my impression.

> There are also things which are not monkey-patch per se, but are related
> to mungling with sys.path, although it is not involved in the precise
> case you are showing (but explain a lot of breakings of setuptools, at
> least in my own experience).

Oh yes, I've seen my share of those.  Now I clean up the .pth files
very often to try to keep these gremlins under control :)

> Robert is right: most of setuptools ugliness comes from distutils (and
> lack of proper features from python itself). Not only is it difficult to
> extend distutils by design, but it is also difficult to reuse parts of
> it on your own extensions (because there are long functions with data
> embedded in the code; see for example msvccompiler for some fun). That's
> the whole problem: the only way to be clean is to avoid distutils, but
> avoiding distutils means nobody will use the tool.

I know this is an unfortunately very nasty problem.  I have dug into
the tar pit that is distutils in the past, and I know exactly what you
mean.  It's impossible to follow how and when data and state change,
since many methods just modify things on the fly without ever
indicating what they're doing (flags, variables, etc).  I've since
given up on fighting much on this front, since braver souls than me
showed up (i.e., you :)

Cheers,

f



More information about the SciPy-Dev mailing list