2012-01-23 63 views
0

我正在使用python的nltk來做一些有趣的事情來從PHP輸入字符串,但我在將其輸出到瀏覽器時遇到一些困難。我的代碼如下所示:在瀏覽器中運行Python腳本的奇怪問題

system("python test.py command line arguments"); 

這在命令行正確輸出不管是在我的test.py文件。但是,在瀏覽器中它將工作,除非存在特定的代碼。

內test.py:

import string 
import sys 
from nltk import word_tokenize as wt 
from nltk.corpus import wordnet as wn 

x = "" 
for item in sys.argv: x += item+" " 

i = wt(x) 
result = "" 
wn.morphy(i[0]) 
print "hello world" 

這不會在瀏覽器打印的「Hello World」,但只有當以上代碼行是存在的。無

wn.morphy 

它會運行。不幸的是我需要使用wn.morphy。爲什麼在我的test.py文件中使用該特定行代碼的瀏覽器中不起作用?我已經關閉了安全模式,這可以讓我用python輸出到瀏覽器

+0

你能展示一個完整的PHP腳本展示這個問題嗎? –

+0

這是字面上顯示問題的整個PHP腳本。在服務器上使用php和python與nltk運行這兩個應該複製這個問題 – user1164238

回答

0

實際上,這段代碼適用於我的PHP CLI,無論我是否包含wn.morphy行,所以我認爲你的問題在其他地方或版本相關。

您是否記得下載'wordnet'語料庫?如果沒有,運行

>>> import nltk 
>>> nltk.download('wordnet') 

在Python中,然後再試一次。我可以看到腳本錯誤,因爲它無法到達語料庫。

+0

我沒有下載wordnet語料庫,這就是爲什麼它在控制檯中工作 - 它肯定在python中的錯誤,但我無法想象它爲什麼會只在瀏覽器中這樣做。我檢查了phpdoc,兩者都使用相同的ini。 – user1164238

0

什麼是錯誤?這可能是由於WordNet的大小(這是相當大的)還是Python/NLTK花費的時間?實時Web服務器的配額可能比交互式控制檯會話更嚴格。

+0

我不知道錯誤可能是什麼。導入wordnet的工作,但只要我使用它的功能,它不。有可能wordnet太大而無法加載瀏覽器本身,只是由於其不同的限制,但服務器本身是相同的,因爲我使用的命令行是ssh。 – user1164238