2016-04-24 118 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文件夹中,为我工作就像一个魅力。

〜巴赫