[Zope-dev] Re: ploneout - Or how using zc.buildout for a common Zope2 project might look like

Jim Fulton jim at zope.com
Sun Jan 28 17:02:06 EST 2007

Martin Aspeli wrote:
> Jim Fulton wrote:
>> The first step to compatibility is deciding what it means. :)
>> I'm all in favor of workingenv/buildout compatibility.
>> I'd like to see some specifics of how people would like
>> to use workingenv amd buildout together.  I have some guesses,
>> but I'd rather hear people say what they want to do.
>> I think this would be much more useful than a discussion
>> of implementation details at this point.  Once we know what
>> we want the end result to be, I'm sure you and I can work out
>> some implementation that makes sense.
> I agree, and I find myself a bit confused by this orientation as well.
> The main use case I could imagine wanting to solve would be that I'd 
> like to run 'python' inside zc.buildout and have an interactive prompt 
> that had all the eggs that zc.buildout knew about available. That is, 
> I'd like to be able to do "from zope.interface import ..." and so on.

As I mentioned before, this is already supported:

   parts = ... foo ...

   eggs = egg1 egg2 ...
   interpreter = mypy

After running the buildout, you will have bin/mypy.

If you run bin/mypy, then you'll get a Python prompt and you can import
and use anything provided by the listed eggs and their dependencies.

You can also do:

   bin/mypy somescript args

and run the script somescript with the given arguments and it
will have the path set up for it.

One wart is that any scripts defined by the eggs will be installed
too when you run the buildout, which you may or may not want. There's
a way to suppress this but I should probably add a dedicated interpreter
recipe that just creates an interpreter.

> Similarly, say I had two applications, one in Zope and one in Pylons, 
> part of the same deployment (possibly interwoven using wsgi). If I 
> installed elementtree as an egg in buildout.cfg, I'd expect it to be 
> available to both. If that means patching some of pylon's confg files or 
> startup scripts to explicitly reference eggs that buildout is managing, 
> it would mean that I'd need a very specific recipe for Pylons 
> development that would need to know a lot of detail about how that sets 
> up its environment

Yes, depending on how complex Pylon's setup was.  For example, if Pylons
exposed it's scripts using setuptools entrypoints, you you could install
them with buildout.

> (in the same way, the z2c.recipe.zope2instance recipe 
> knows about how the zopectl and runzope scripts set their PYTHONPATH and 
> patches them).

Zope startup scripts are sort of interesting because they
are instance specific -- combining instance-specific configuration
with software definition.  This is something that setuptools
entry points don't handle very will by themselves.  That's
why buildout has custom script generation facilities that alllow
definition of extra initialization code and entry point arguments.

I wouldn't be surprised if Pylons had similar needs.


Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org

More information about the Zope-Dev mailing list