У меня есть файл PHP, который вызывает скрипт Python, чтобы затем вернуть значение, которое выводится в PHP.
$price = system("/usr/local/bin/python3 /full/path/script.py", $retval);
В целях тестирования из-за этой ошибки я закомментировал все из скрипта Python, за исключением печати строки, которая должна быть возвращена. Если у меня так, он возвращает эту строку, но если я раскомментирую строку
from bs4 import BeautifulSoup
тогда это терпит неудачу. Другие импорты, которые у меня есть, для sys и запросов, работают без проблем, но когда у меня импортирован BeautifulSoup, ничего не возвращается, и я получаю $ retval, равный 1. Запуск полного скрипта Python из командной строки работает отлично, но когда я сделать это с помощью PHP, команда не работает.
Что помешало бы этому правильно работать в PHP, но оно работает нормально, когда выполняется в командной строке? Я гарантировал, что bs4 установлен с pip, но я все равно знал, что он работает из командной строки.
Попробуй это. Это была единственная команда, работавшая на меня однажды.
Убедитесь, что путь к питону правильный. На моем компьютере я установил пакет anaconda, поэтому путь другой. Помните, что если вы запускаете php на своем сервере apache, вы вызываете команду как пользователь apache «www-data», а не как пользователь, вошедший в систему.
exec('/usr/local/bin/python3 /full/path/script.py 2>&1', $out);
Других решений пока нет …