Your second point 'clear separation of "production" code and "test" code' is best handled by using a revision control system. I know Clearcase, because I use it at work, but I have heard good things about Subversion.
-- http://mail.python.org/mailman/listinfo/python-list