[Grok-dev] pyinstall - helpful to us?
Philipp von Weitershausen
philipp at weitershausen.de
Wed Sep 24 09:15:32 EDT 2008
Brandon Craig Rhodes wrote:
> I thought I'd ping the Grok list about this post. Could it be helpful
> to us? It sounds like everything we are already doing, but through an
> "official" mechanism that we'd be sharing with other people if we
> started using it. Or - have other projects already started using our
> own tools for this, so they're simply completing solutions?
I quite like pyinstall. Some comments:
* As far as I can tell, pyinstall is meant to be used within a
virtualenv. Sure, it would work with your global site-packages, but it's
more of a deployment tool, isn't it.
* I like the way pyinstall installs eggs. easy_install basically creates
a directory "foo-py2.4.egg" in site-packages, then dumps the egg in
there and adds the directory to sys.path. The result is a huge sys.path.
pyinstall actually dumps the contents of eggs directly into
site-packages and installs an .egg-info directory (to let setuptools
know that the egg has been installed, much like with develop eggs). The
result is that namespaced packages (zope.*) are all rolled back into one
tree and sys.path is nice and short. The downside is that this approach
won't let you do a central egg directory that buildout supports, but
perhaps that's not necessary with pybundles (see below).
* pybundles are a great idea because they're essentially what our
eggbaskets are: archives of source archives. If pybundles become widely
accepted, it might make sense to switch over to them, but for now the
eggbasket system seems to work well for us.
* pyinstall's --freeze feature is much like our version pinning, except
that it's a bit more powerful. Each line in the requirements file is a
setuptools-compatible version statement, so you can use the == operator,
but you can also use ranges (<=, >=, etc.).
* zc.buildout obviously still does a lot more than pyinstall. Right now
we need it for building an instance and doing other Zopey things. Once
we use PasteDeploy, there's might be no need for that anymore. E.g.
zopeproject generated code just uses zc.recipe.egg by design to make it
More information about the Grok-dev