Distributing Python apps

Bjorn Pettersen BPettersen at NAREX.com
Mon Jan 6 12:29:05 EST 2003


> From: Delaney, Timothy [mailto:tdelaney at avaya.com] 
> 
> > From: Norman Skrzypinski [mailto:zypin at sympatico.ca]
> > 
> > In the end, I request that you very capable Python experts
> > give me a way to give my customers a 750 KB app.
> 
> That type of attitude is only going to get people offside. 
> None of these python experts have time to cater to your 
> specific desires - most don't have time to cater to their 
> own. If you want it done, you will either need to do it 
> yourself, or pay someone else to do it.

Yes, the way he came across in email didn't sound very professional. I'm
assuming that wasn't intentional... His inquiry seems to reveal that
we're missing entry level tutorials for distributing apps (or at the
very least they don't seem to be where he looked)...

> > That's not too much to ask, I think.  It's been done, by
> > every other major software company.
> 
> Python is not developed by a major software company. And most 
> programming environments have considerably larger runtimes - 
> for a *really* bad example, look at Java. Perl is similar in 
> size with its standard library to Python.

Does this mean that you're arguing for bloated executables <wink>?.

> Despite the attitude, here is a link that you may find useful ...
> 
> http://www.pythonapocrypha.com/projects/pyco/

Cool stuff (which I'd never heard of...). Reading the documentation, it
seems like most of the packagers are struggeling with creating the
import graph. I remember packaging a program using PyXML where I had to
manually import the correct parser since PyXML tried to search for and
load the 'best' one available -- so finding the imports isn't trivial
even when your code is... It seems it might be useful to add a module to
the library that emits the graph either through static analysis, or by
logging imports during a run. Static analysis could probably catch 95%
of the imports, and even with run-time logging you might be hosed if you
don't execute the program path that imports a module. If you combine
them I would think you'd get in the 99% range (which I think is quite
acceptable for a language like Python).

It looks like the new import hooks, PEP 302, has been accepted and from
reading the discussion it sounds like it would make it easier to write a
run-time analysis (and also make static analysis harder :-). I must
admit that I haven't studied the implementation enough to appreciate the
finer details yet though so I could be completely off base <wink>. It
would be interesting to hear if the py2exe/Installer/Pyco developers
would find such a module useful, or if they'd rather use their own
handwritten code...? (I'm guessing there are at least a handful of
issues that I haven't even considered <wink>). It would be an
interesting project either way though :-)

-- bjorn





More information about the Python-list mailing list