2011-01-06 49 views
12

我正在尝试设置WAMP服务器。我有Apache正常工作,并且我已经安装了mod_wsgi而没有困难。在Windows上使用Apache/mod_wsgi从virtualenv运行Python

问题是,我正在为我的项目使用虚拟环境(使用virtualenv)。很明显,mod_wsgi在定位我的Django安装时遇到了问题。

我想了解如何让mod_wsgi与virtualenvs一起工作。该文档似乎认为这是不可能的:

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

从这里:mod_wsgi + virtualenv docs

有没有人有关于如何使这项工作的一些想法?

+2

对Windows上WSGIPythonHome的评论其实是错误的。限制被解除,可能在mod_wsgi 3.X(不确定)。评论已被删除。 – 2011-01-06 21:27:32

回答

12

您可以从Python以编程方式激活环境,并在导入其他任何内容之前将其添加到.wsgi文件中。

virtualenv's docs

有时你不能或不想 使用由 的的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上首先显示 。 但是,这不能撤消 激活其他环境或 已导入的模块。你 不应该尝试,例如, 激活一个环境之前的网络 请求;你应该尽早激活一个 环境,并且 不会在该过程中再次执行。

+0

这看起来不错,我会试试看。但它看起来会在我的系统上使用“main”Python互操作程序,而不是使用virtualenv创建的那个,对吧?这意味着我只能在我的系统上使用一个版本的Python? (这只会是一个小问题)。 – 2011-01-06 19:11:31

相关问题