In src/mod_python.c, there is code in various places of the form:
/* get/create interpreter */
idata = get_interpreter(interp_name, req->server);
Ie., 500 errors is returned for a quite serious problem.
If one looks in get_interpreter() though, when it returns a NULL,
it doesn't always log why.
Now one would hope that it would never fail in the first place, but
it is failing on Mac OS X when "restart" and not "stop/start" is used
by some people. The lack of logged messages has mean't some
detective work to localise the problem. The actual cause is still
being sort, but comprehensive logging in get_interpreter() is
worthy of a request in itself.
For further information see mailing list thread of which the following
is a part.