[Zope3-dev] eggs in a Zope 3.3 instance

Jim Fulton jim at zope.com
Fri Jun 16 13:50:39 EDT 2006


On Jun 16, 2006, at 9:21 AM, Martijn Faassen wrote:

> Jim Fulton wrote:
>> On Jun 15, 2006, at 10:42 AM, Martijn Faassen wrote:
>>> Hi there,
>>>
>>> I'm trying to develop with eggs now in a straight Zope 3.3  
>>> instance. I've make it all work with Schooltool, but that's  
>>> hardly a "normal" Zope 3 install, and now I'm trying to figure  
>>> out the way of working with egg dependencies in the face of a  
>>> Zope 3 instance home setup.
>> I'm working on something sort of along the same lines, but more
>> general.
>> See the fledgeling zc.buildout project:
>>   http://svn.zope.org/zc.buildout/trunk/
>
> I looked at it for a bit, but I was a bit confused about the goals  
> of the project.
> Perhaps something could be added to the README that explains what  
> kind of usecases this project is covering?

Done.

> What does one do when one wants to set up an application into a  
> Zope 3 instance, say?

We don't have a Zope 3 instance recipe yet, but when we do, you'd
define a part, which is an instance, and, in the configuration of  
that part, you'd
define what eggs you want.  You won't have to define the dependencies  
of the eggs,
as they will be installed automatically.

I expect to have the necessary recipes to demonstrate this at  
EuroPython.

Note that it doesn't matter where the eggs are physically installed.
What matters is that the Zope startup scripts include the eggs being  
uses in
their paths.

> Anyway, I considered using zc.buildout but was a bit lost, and just  
> reverted to a simple approach.

Well, it is still evolving.  Note that the ac.buildout project itself
is an example of a buildout.

I expect that there will be other examples in the near future.


> [snip]
>> Some things to note:
>> - We install scripts that have paths baked into them.
>>   This has a number of advantages:
>>   o You don't need a custom site.py.
>>   o You can have multiple scripts that use different
>>       egg versions.
>>   o You don't need Python path set in special ways
>>   o Scripts don't have to load setuptools
>
> Those are indeed nice features. One of the things that bothers me  
> about eggs is the amount of site.py hackery that seems to be going  
> on. It works, but it just feels rather too magic.

Yup.  I think it is a mistake to think of an application as being like a
Python install.

>> - There is a test-runner recipe that generates a test runner
>>   script based on eggs to be tested.
>> It was my intent to use this to manage eggs-based Zope
>> checkouts.
>
> By this you mean an egg-managed Zope itself, right? I'm just  
> interested in getting eggs working with Zope 3 instances.

Right. When you checked out Zope, you'd get a buildout.
You'd have one or more source areas holding the software that was
actually part of the Zope project.

When you ran the buildout script, the source areas wold be
installed as develop egg links.  All of their dependencies would be
installed as regular eggs.  The buildout actually uses easy_install to
fetch any needed eggs.

Any script, like test runners or server control scripts will be  
generated
automatically, based on information provided in the buildout  
configuration.

> Would you

Certainly :)

>> I plan to present this work at EuroPython.
>
> I saw it in the program and will attent the talk with interest. :)

Cool.

> Concretely, what do you think about making lib/python in a Zope 3.3  
> instance a site for now (calling site.addsitedir())?

I think it's a bad idea, mainly because it's too late to make such a  
change
for 3.3.  I tell you what I will do though, I'll promise, by the end  
of EP, to
have a buildout that lets you define Zope 3.3 instances with the eggs
of your choice.

Jim

--
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 Zope3-dev mailing list