2016-04-24 114 views
0

因爲某些原因我不得不將我的web應用程序我的本地機器上。我需要從python腳本中提取一些信息。 我跟着很多的指南,並在這裏回答了stackoverflow,但我有一個奇怪的問題。 我有一個簡單的Web應用程序,從一個AJAX調用PHP文件jQuery的,從一個python腳本檢索一些信息,那麼PHP文件闡述他們送回的JavaScript。 我的問題是與PHP文件:Ubuntu的XAMPP着運行python腳本

<?php 
$test = 'just a string to elaborate'; 
$result = system("cd ~/Scrivania/test && python script3.py ". escapeshellarg($test)); 
var_dump($result); 
?> 

和python腳本:

#!/usr/bin/env python 
import sys 
import os 
import numpy as np 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.naive_bayes import MultinomialNB 
from sklearn.pipeline import Pipeline 
from sklearn.metrics import confusion_matrix, f1_score 
from sklearn.datasets import load_files 
from sklearn.svm import SVC 
from sklearn.feature_extraction.text import TfidfTransformer 
from sklearn.naive_bayes import MultinomialNB 
from sklearn.metrics import accuracy_score 
from sklearn.metrics import classification_report 
string = sys.argv[1] 
sets = load_files('scikit') #carico il set 




count_vect = CountVectorizer() #bigrammi count_vect = CountVectorizer() per bags of words 
X_train_counts = count_vect.fit_transform(sets.data)  #applico al set 



tf_transformer = TfidfTransformer(use_idf=False).fit(X_train_counts) 
X_train_tf = tf_transformer.transform(X_train_counts) 


tfidf_transformer = TfidfTransformer() 
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts) 



clf = MultinomialNB().fit(X_train_tfidf, sets.target) 
docs_new = [string] 
X_new_counts = count_vect.transform(docs_new) 
X_new_tfidf = tfidf_transformer.transform(X_new_counts) 
predicted = clf.predict(X_new_tfidf) 
for doc, category in zip(docs_new, predicted): 
    #print('%r => %s' % (doc, sets.target_names[category])) 
    #print(sets.target_names) 
    print(clf.predict_proba(X_new_tfidf)) 

此命令將不會被執行,並在錯誤日誌中我得到:

Traceback (most recent call last): File "script3.py", line 5, in from sklearn.feature_extraction.text import CountVectorizer importError: No module named sklearn.feature_exctraction.text

顯然scikit學習和所有它的組件安裝,並且它工作得很好,如果我從shell運行相同的命令它的工作,並給了我正確的輸出。 如果我嘗試運行不同的腳本,而不是當前的,是這樣的:

import sys 
import os 
print('hello') 

我得到的輸出。
我真的不能弄清楚是什麼問題,爲什麼蟒蛇從PHP着負載scikit調用。
我知道,從PHP調用Python腳本不是一個好主意,但不是最終的解決辦法(我只是需要一個版本,我的應用程序是脫機工作)。
python版本:2.7;
我已經嘗試過裏面的cgi-bin文件夾移動。
任何幫助將非常感激。 尼科

回答

0

我被困了好幾天用了同樣的問題,這是我發現:

有當地的圖書館,並通過XAMP/MAMP使用的一個之間的差異,這就是爲什麼基本的Python腳本運行和而不是進口商品。

你需要做的是複製你的本地庫(sklearn ..等)並將其粘貼到xamp lib文件夾中,爲我工作就像一個魅力。

〜巴赫