在Windows上使用Apache/mod_wsgi运行虚拟环境中的Python
我正在尝试设置WAMP服务器。Apache已经正常工作了,我也顺利安装了mod_wsgi。
问题是,我在我的项目中使用虚拟环境(用virtualenv)。所以很明显,mod_wsgi在找到我的Django安装时遇到了问题。
我想弄明白如何让mod_wsgi和虚拟环境一起正常工作。文档似乎认为这不可能:
请注意,WSGIPythonHome指令只能在UNIX系统上使用,而在Windows系统上不可用。这是因为在Windows系统中,Python DLL的位置似乎决定了Python会在哪里查找Python库文件。目前还不知道如何在Windows上创建一个独立于主Python安装的基线环境。
更多信息可以查看这里: mod_wsgi + virtualenv 文档.
有没有人知道怎么让这个工作呢?
1 个回答
13
你可以通过在你的 .wsgi 文件中添加一些代码来在 Python 中程序化地激活环境,记得在导入其他内容之前加上这段代码。
来自 virtualenv 的文档:
有时候你可能不能或者不想使用虚拟环境创建的 Python 解释器。比如在 mod_python 或 mod_wsgi 环境中,只有一个解释器可用。
幸运的是,这个过程很简单。你需要使用自定义的 Python 解释器来安装库。但是在使用库的时候,只需要确保路径是正确的。还有一个脚本可以帮助你修正路径。你可以这样设置环境:
activate_this = '/path/to/env/bin/activate_this.py' execfile(activate_this, dict(__file__=activate_this))
这段代码会改变 sys.path,甚至会改变 sys.prefix,同时也允许你使用已有的解释器。你环境中的项目会优先显示在 sys.path 中,排在全局项目之前。不过,这并不能撤销其他环境的激活,或者已经导入的模块。比如,你不应该在处理网络请求之前激活一个环境;你应该尽早激活一个环境,并且在这个过程中不要再激活其他环境。