Index: trac/web/main.py
===================================================================
--- trac/web/main.py	(revision 3744)
+++ trac/web/main.py	(working copy)
@@ -264,13 +264,20 @@
     """
     if 'mod_python.options' in environ:
         options = environ['mod_python.options']
-        environ.setdefault('trac.env_path', options.get('TracEnv'))
+        subprocess_env = environ.get('mod_python.subprocess_env', {})
+        def get_opt(opt_name, env_name):
+            try:
+                return options[opt_name]
+            except KeyError:
+                return subprocess_env.get(env_name)
+        environ.setdefault('trac.env_path', get_opt('TracEnv', 'TRAC_ENV'))
         environ.setdefault('trac.env_parent_dir',
-                           options.get('TracEnvParentDir'))
+                           get_opt('TracEnvParentDir', 'TRAC_ENV_PARENT_DIR'))
         environ.setdefault('trac.env_index_template',
-                           options.get('TracEnvIndexTemplate'))
+                           get_opt('TracEnvIndexTemplate',
+                                   'TRAC_ENV_INDEX_TEMPLATE'))
         environ.setdefault('trac.template_vars',
-                           options.get('TracTemplateVars'))
+                           get_opt('TracTemplateVars', 'TRAC_TEMPLATE_VARS'))
         environ.setdefault('trac.locale', options.get('TracLocale'))
 
         if 'TracUriRoot' in options:
@@ -340,7 +347,7 @@
                                '"TRAC_ENV_PARENT_DIR" or the mod_python '
                                'options "TracEnv" or "TracEnvParentDir" are '
                                'missing. Trac requires one of these options '
-                               'to locate the Trac environment(s).')
+                               'to locate the Trac environment(s). %r' % environ['mod_python.subprocess_env'])
     env = _open_environment(env_path, run_once=environ['wsgi.run_once'])
 
     if env.base_url:

