在Windows上使用Apache/mod_wsgi从virtualenv运行Python

Eda*_*aor 12 python apache wamp wampserver virtualenv

我正在尝试设置WAMP服务器.我已经让Apache正常工作了,而且我已经安装了mod_wsgi.

问题是,我正在为我的项目使用虚拟环境(使用virtualenv).显然,mod_wsgi在查找我的Django安装时遇到了问题.

我试图了解如何让mod_wsgi与virtualenvs一起使用.文档似乎认为这是不可能的:

请注意,WSGIPythonHome指令只能在UNIX系统上使用,并且在Windows系统上不可用.这是因为在Windows系统上,Python DLL的位置似乎决定了Python查找Python库文件的位置.目前还不知道如何创建独立于Windows上的主要Python安装的独特基线环境.

从这里:mod_wsgi + virtualenv docs.

有没有人对如何使这项工作有所了解?

alb*_*tov 13

您可以通过Python以编程方式激活环境,将其添加到.wsgi文件中,然后再导入其他内容.

来自virtualenv的文档:

有时你不能或不想使用virtualenv创建的Python解释器.例如,在mod_python或mod_wsgi环境中,只有一个解释器.

幸运的是,它很容易.您必须使用自定义Python解释器来安装库.但是要使用库,您必须确保路径正确.脚本可用于更正路径.您可以设置以下环境:

activate_this = '/path/to/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
Run Code Online (Sandbox Code Playgroud)

这将更改sys.path甚至更改sys.prefix,但也允许您使用现有的解释器.环境中的项目将首先显示在sys.path上,然后显示在全局项目之前.但是,这无法撤消其他环境或已导入模块的激活.例如,您不应该尝试在Web请求之前激活环境; 您应该尽早激活一个环境,而不是在该过程中再次激活.

  • 搜索者 - 您可以在此处看到此实现:http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/,它向下显示了如何激活和设置wsgi.py中的路径变量 (2认同)
  • 要删除绝对路径,您还可以执行`activate_this = os.path.dirname(__ file__)+'/ env/bin/activate_this.py'`(假设您的虚拟环境与WSGI文件位于同一位置. (2认同)