по некоторым причинам я должен переместить мое веб-приложение на мою локальную машину. Мне нужно извлечь некоторую информацию из скрипта Python.
Я следовал всем инструкциям и ответам здесь на stackoverflow, но у меня странная проблема.
Я получил простое веб-приложение, которое из jquery с помощью ajax-вызова php-файла извлекает некоторую информацию из скрипта python, затем php-файл разрабатывает их и отправляет обратно в javascript.
Моя проблема с файлом PHP:
<?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 setcount_vect = CountVectorizer() #bigrammi count_vect = CountVectorizer() per bags of words
X_train_counts = count_vect.fit_transform(sets.data) #applico al settf_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 (последний вызов был последним): файл «script3.py», строка 5, в
from sklearn.feature_extraction.text import CountVectorizer importError: Нет модуля с именем sklearn.feature_exctraction.text
очевидно, scikit-learn и все его компоненты установлены, и это прекрасно работает, если я запускаю из оболочки ту же команду, она работает и дает мне правильный вывод.
Если я попытаюсь запустить другой скрипт вместо текущего, что-то вроде:
import sys
import os
print('hello')
Я получил выход.
Я не могу понять, в чем проблема и почему Python вызван из php не могу загрузить scikit.
Я знаю, что вызывать скрипты Python из php не очень хорошая идея, но это не окончательное решение (мне просто нужна версия моего приложения, которая работает в автономном режиме).
версия на Python: 2.7;
Я уже пытался переместиться в папку cgi-bin.
Любая помощь могла бы быть полезна.
Нико
Я застрял на несколько дней с одной и той же проблемой, вот что я узнал:
Есть разница между вашими локальными библиотеками и той, что используется xamp / Mamp, поэтому запускается базовый скрипт на python, а не тот, что импортирует.
Что вам нужно сделать, это скопировать вашу локальную библиотеку (sklearn ..etc) и вставить ее в папку lib xamp, для меня это работает как шарм.
Приветствия
Других решений пока нет …