[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 
virtualenv/easy_install-friendly.



More information about the Grok-dev mailing list