Aus irgendwelchen Gründen muss ich meine Webanwendung auf meinem lokalen Rechner verschieben. Ich muss einige Informationen aus einem Python-Skript extrahieren. Ich habe viele Anleitungen verfolgt und hier auf stackoverflow geantwortet, aber ich habe ein seltsames Problem. Ich habe eine einfache Web-App, die von jQuery mit einem AJAX-Aufruf an eine PHP-Datei, abrufen Sie einige Informationen aus einem Python-Skript, dann die PHP-Datei erarbeiten sie aus und senden Sie zurück zu Javascript. Mein Problem ist mit der PHP-Datei:Ubuntu xampp kann kein Python-Skript ausführen
<?php
$test = 'just a string to elaborate';
$result = system("cd ~/Scrivania/test && python script3.py ". escapeshellarg($test));
var_dump($result);
?>
und dem Python-Skript:
#!/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))
Dieser Befehl würde ich nicht ausgeführt werden, und im Fehlerprotokoll bekam:
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
offensichtlich scikit-lernen und alle seine Komponenten sind installiert, und es funktioniert gut, wenn ich von der Shell den gleichen Befehl läuft es funktioniert und gaben mir korrekte Ausgabe. Wenn ich versuche, ein anderes Skript, anstatt die aktuellen, so etwas wie zu laufen:
import sys
import os
print('hello')
ich die Ausgabe bekam.
Ich kann wirklich herausfinden, was das Problem ist und warum Python aus PHP aufgerufen cant laden scikit.
Ich weiß, dass Aufruf Python-Skripte von PHP ist keine gute Idee, aber ist keine endgültige Lösung (ich brauche nur eine Version meiner App, die offline funktioniert).
Python-Version: 2.7;
Ich habe bereits versucht, in cgi-bin-Ordner zu bewegen.
Jede Hilfe würde wirklich geschätzt werden. Nico