2012-02-09 51 views
0

我正在尋找如何通過設置pythonpath導入模塊。 要檢查的路徑蟒正在注視:爲什麼給PYTHONPATH一個不同的值?從cgi(apache)不類似於本地

import sys 
print "modules will be searched in the following paths:" 
for path in sys.path: 
    print path 
print "python version: " + sys.version 

我加入PYTHONPATH環境變量(窗口GUI)一些額外的路徑,但是在apache的一個cgi文件執行時,上面的代碼(在瀏覽器),它不顯示我添加的路徑...(實際上,它不會從缺少的路徑加載模塊) 當我用python在本地執行代碼時,顯示所有路徑(所以沒關係)。

#!C:\tools\programming\Python27\python.exe 
import cgi 
import cgitb 
cgitb.enable() 
print "Content-type: text/html" 
print 
import sys 

#import timeOperations 

for path in sys.path: 
    print path + "<br>" 

print "python version: " + sys.version 
print "<html>" 
print "<center>Lode doet het weer!</center>" 
print "</html>" 

我做了電腦重啓,沒有成功。還只安裝了一個python版本。

爲什麼給PYTHONPATH一個不同的值?我不知道。 任何幫助表示讚賞!

Lode

回答

1

我個人不喜歡通過環境變量將事情添加到PYTHONPATH中,因爲這個原因。我懷疑是因爲你的PYTHONPATH環境變量的範圍與Apache正在使用的範圍不同。例如,你的變量可能對你的用戶是本地的,而Apache只用系統環境變量運行。

我發現通過向您的site-packages目錄添加一個「.pth」文件來完全繞過環境變量更可靠。從python解釋器執行以下代碼:

import distutils.sysconfig 
print distutils.sysconfig.get_python_lib() 

這將打印「site-packages」目錄的位置。訪問該目錄(從命令行或Windows資源管理器)並在其中創建一個名爲「MyPythonPath.pth」的文件(或其他擴展名爲「.pth」的文件)。在這裏面,包括你想添加到您的PYTHONPATH在獨立的行各值:

C:\Path\to\first\directory 
C:\Path\to\second\directory 

下一次你運行Python,這些文件夾將被添加到您的路徑,無論你在哪裏長遠來看,因爲它,你總是使用相同的Python解釋器。

+0

這很好!我從一開始就不喜歡Python路徑,這是一個很好的選擇!當沒有找到模塊時,我把這個解決方案放在錯誤捕獲中:)非常感謝。 – lode 2012-02-09 14:54:24

0

環境變量是特定於用戶的。我懷疑Apache是​​否和你一樣以同一個用戶運行。您需要通過服務控制檯專門爲Apache用戶添加它們。

+0

現在我明白了。感謝您的解釋。(但我實現了mlefavors解決方案) – lode 2012-02-09 14:57:00

相關問題