环境variables在哪里?

我有一个活动mod-wsgi的apache2服务器,但是我不能得到环境variablesPYTHON_EGG_CACHE。
这里是我的virtualhost.conf中的重要部分:

DAV svn SVNParentPath /var/svn SVNListParentPath Off WSGIProcessGroup sites WSGIApplicationGroup %{GLOBAL} SetEnv PYTHON_EGG_CACHE /var/trac/eggs AuthType Basic AuthName "Restricted SVN" AuthBasicProvider wsgi WSGIAuthUserScript /var/trac/cgi-bin/acctmgr_auth.wsgi Require valid-user 

在这里acctmgr_auth.wsgi:

 import os, sys os.environ['PYTHON_EGG_CACHE'] = PYTHON_EGG_CACHE from trac.env import open_environment, Environment acct_mgr = None def check_password(environ, user, password): global acct_mgr # Try loading the env from the global cache, addit it if needed environ['PYTHON_EGG_CACHE'] env = open_environment(environ['trac.env_path'], use_cache=True) if acct_mgr is None: from acct_mgr.api import AccountManager acct_mgr = AccountManager if acct_mgr(env).check_password(user, password): return True else: return False def groups_for_user(environ, user): return [''] 

单一的environ['PYTHON_EGG_CACHE']只是一个testing,但我得到了一个

KeyError:'PYTHON_EGG_CACHE'

我也试过,但是我得到了和上面一样的错误:

  RewriteCond ${lowercase:%{REQUEST_URI}} ^/svn/([^/]+) RewriteRule . - [E=trac.svn_path:/var/trac/envs/%1] 

哪里不对?

感谢您的任何build议。

编辑:经过一些研究,我想我find了问题。 mod_dav是为location / svnconfiguration的,它立即处理请求,所以rewritecond和rewriterule将被忽略。
有没有可能使用mod_dav设置环境variables?

这是我在我的django网站上做的,path是在apache文件中设置的(如MY_PATH)。 请注意,我将它复制到o​​s.environvariables中。

 import os, sys, django.core.handlers.wsgi _application = django.core.handlers.wsgi.WSGIHandler() def application(environ, start_response): path = environ['MY_PATH'] if path not in sys.path: sys.path.append(path) os.environ['MY_PATH'] = environ['MY_PATH'] from django.conf import settings settings.DEBUG = True return _application(environ, start_response) 

由于我将环境variables复制到os.environ,我现在可以在设置文件中使用它(例如)。 请注意,在包含设置之前,我已经设置了所有的os.environvariables。 在设置我得到它是这样的:

 import os PATH = os.environ['MY_PATH'] 

使用CGI时, SetEnv通常只设置进程环境variables。 对于mod_wsgi, SetEnvvariables进入每个请求WSGI环境而不是进程环境。
因此,它们不能从WSGI脚本的全局范围访问,甚至在可调用的应用程序中,您必须从作为parameter passing的environ字典访问它们。

我使用environ ['REQUEST_URI']的内容find了一个解决scheme,并在python文件中进行检查。
更多细节你可以在这里find: http : //trac-hacks.org/ticket/8525