[Zope3-dev] Re: System python for *development*? (Was: 3.3.0 tag
broken by zc.catalog eggs?)
Tres Seaver
tseaver at palladion.com
Tue May 22 08:36:01 EDT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Marius Gedminas wrote:
> On Mon, May 21, 2007 at 12:21:42PM -0400, Tres Seaver wrote:
>> Reinoud van Leeuwen wrote:
>>> On Mon, May 21, 2007 at 10:39:22AM -0400, Fred Drake wrote:
>>> As a developer it might be a good idea to have different installed pythons
>>> in different environments to be sure that some modules (or python itself)
>>> meet different requirements.
>>>
>>> But as system maintainer I like to keep things simple. I do not want
>>> similar trees of python installations all over the place if it can
>>> be avoided.
>> Just as with Java-based applications: if the server's job includes
>> running Zope, then installing a separate Python interpreter is a pretty
>> low cost, with the following benefits:
>>
>> - You don't risk breaking your production Zope application in a
>> distro-mandated upgrade to Python (e.g., Fedora 7 puts Python 2.5
>> into /usr/bin/python).
>
> That's probably the best reason. I ran away from Debian's Zope 2.x
> packages because they made upgrades painful.
>
>> - You may not want to pay the cost of a Python optimized for desktop
>> applications (UCS-4, anyone?)
>
> Do you have any numbers? How much memory of a typical Zope 3 app is
> taken by Unicode strings? (I'm not trying to invalidate your argument,
> I'm genuinely curious.)
No hard numbers, except a vague recollection of shock at the difference
in two appservers running the same application, where one was running
using a UCS-4 interpreter. Given that pretty much *all* ZPT rendering
these days involves Unicode manipulation, lots of the "transient" memory
used while rendering a page (as opposed to the ZODB cache) is
potentially affected.
>> - You may need to patch Python to work around a bug which is only
>> problemnatic for long-running Python instances (e.g., the
>> longstanding cgi.FieldStorage DoS problem).
>
> I don't think that's a good example. I'd rather patch Zope in this
> particular case.
De gustibus, I guess. Patching Python to work around issues which
affect your own application, but where the patch may languish in the SF
tracker for more than a year seems reasonable to me. #112549 comes to
mind, for instance: although reported against Python 2.3 while 2.3 was
still in maintenance, the fix never did make it into a 2.3 release, and
missed three third-dot revisions on the 2.4 side.
>> - You can create a repeatable environment for testing each deployed
>> application, even where those applications are running on boxes
>> with different OS / distro-supplied Pythons.
>
> There's still a point where you stop, right? You don't have a
> self-compiled libc and a self-compiled C compiler to make sure your
> self-compiled Pythons are really identical?
I don't go that far (yet ;), but I often do end up building other
non-Zope components:
- libxml2/lxml, for instance, because the OS-provided one has
typically been too old, and because getting the Python wrappers
built any other way is a nightmare
- postgres, because I want to use Python as a stored procedure
language.
- Squid3 for ESI.
- (hypothetically) Apache + mod_python, because it hard-wires the
location of the Python iterpreter / DLLs.
The end result is that we can develop on laptops (Linux or Mac) and
deploy to production boxes (various Linux flavors, FreeBSD) with a fair
amount of confidence that the pieces all work as expected; the
platform-specific bits all get manaaged as part of the buildout libraries.
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGUuOw+gerLs4ltQ4RAiHTAJwL8XV3wdDdzcyKP6/PDbboerU8oQCeLdIj
w3R+bkVczZtCvOZXl19/Qjc=
=hqDF
-----END PGP SIGNATURE-----
More information about the Zope3-dev
mailing list