2011-01-06 86 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

相關問題