TensorFlow возвращает ошибку при использовании в проекте Laravel, почему?

Я запускаю эту команду из bash (в моем случае zsh)

python images/classify_image.py --image_file images/new_name.jpg

И я получаю правильный вывод:

power drill (score = 0.97464)
hand blower, blow dryer, blow drier, hair dryer, hair drier (score = 0.00101)
carpenter's kit, tool kit (score = 0.00043)
screwdriver (score = 0.00034)
joystick (score = 0.00028)

Но когда я пытаюсь воспроизвести то же самое в моем проекте Laravel, я получаю ошибку. Мой код внутри моего контроллера:

$process = new Process('python images/classify_image.py --image_file images/new_name.jpg');

$process->run();
// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
dd($process->getOutput());

Я использую Composer — Класс процесса для того, чтобы выполнить команду, которая поставляется с Laravel. После запуска этого кода я получаю эту ошибку:

Команда «python images / classify_image.py —image_file images / new_name.jpg» не выполнена. Код выхода: 1 (общая ошибка) Рабочий каталог: / var / www / html / share / public Вывод: ================ Вывод ошибки: ======== ======== Traceback (последний вызов был последним): файл «images / classify_image.py», строка 46, в тензорном потоке импорта как tf ImportError: нет модуля с именем tensflow

Кто-то может дать мне подсказку, почему я получаю эту ошибку? Кажется, у Laravel нет доступа к TensorFlow, но почему я могу выполнить эту команду из оболочки, а не в проекте Laravel?

0

Решение

Это не проблема с Laravel. Можете ли вы запустить команду, используя exec ()? Я предполагаю, что это проблема пути. Процесс принимает третий параметр для переменных env.

Посмотрите, поможет ли это:

$command = 'python images/classify_image.py --image_file images/new_name.jpg';
$cwd = null;
$envVars = [ 'HOME' => getEnv('HOME'), 'PATH' => getEnv('PATH') ];
$process = new Process($command, $cwd, $envVars);
$process->run();
// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
dd($process->getOutput());

Редактировать:

Причина была до tensorflow не является глобально доступным из-за того, что системная переменная PATH не передается в оболочку.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]