[Distutils] [setuptools] best way to create offline install bundles?

Phillip J. Eby pje at telecommunity.com
Fri Sep 8 19:38:06 CEST 2006


At 09:14 AM 9/8/2006 -0400, Kevin Dangoor wrote:
>I've had quite a few complaints over the months from people who are
>stuck behind firewalls and can't install TurboGears with easy_install
>for whatever reason. This problem is somewhat compounded in cases
>where the user may have a machine that has internet access, but isn't
>the same platform as their deployment machine so they wouldn't even
>get the right eggs to deploy with easy_install.
>
>What I ultimately want to end up with is a tarball that contains all
>of the platform independent stuff, and then three tarballs for the
>platform dependent stuff (win, mac, source).
>
>I know about easy_install -zmaxd, and that certainly helps... but
>
>1) it doesn't keep all of the eggs zipped up (because it sitll thinks
>it's doing an install, instead of just a download)

Huh?  -z should force it to never unzip eggs.  Are you sure it's doing that?


>2) it doesn't help with the three platform dependent parts
>
>Is this something zc.buildout can help with? I'm not certain what the
>best way is to automate this process...

If I were in your shoes, I'd certainly take a look at zc.buildout, although 
I don't know if it has everything you'll need.

It would be nice, though, if you ended up with a tool that could be used to 
build a tarball bundle of any project, not just turbogears.  Bonus points 
if the tarball contains everything in --single-version-externally-managed 
form, so somebody can just extract it and put it in a directory on 
PYTHONPATH.  ;)

(Note that to create the SVEM form of an egg, you just rename the EGG-INFO 
directory to package-version-pyver-platform.egg-info during extraction; an 
easy trick using setuptools.archive_util.)

Oh, and extra extra bonus points if this thing can become something like 
"bdist_eggbundle" and was usable via setuptools.  Then, you could just run 
something like "setup.py bdist_eggbundle --platform=XXX" to build one for 
each platform.  :)





More information about the Distutils-SIG mailing list