Мне показалось, что я сбрасываю на нашем сервере небольшой грязный скрипт (Ubuntu 16.04), который дает мне простой текстовый вывод из Python.
Я хочу вызвать скрипт как это из PHP (я знаю, что должно быть какое-то ускорение, но это всего лишь тест в настоящее время):
<?php $command = '/usr/local/bin/script.py'; $output = shell_exec($command); echo $output; ?>
Это script.py
принадлежащий www-data mode 774
#!/usr/bin/python import CoolProp.CoolProp as CP import argparse print('Hallo Welt')
Если я прокомментирую импорт CoolProp
он будет работать. Но каким-то образом пакет не может быть достигнут с помощью www-data
поэтому сценарий ничего не возвращает.
Как вы видите, я хочу использовать пакет CoolProp
.
pip install CoolProp
=> Это работает для моего локального пользователя. Но теперь, когда вызывается из пользовательских www-data
--target=/usr/local/lib/site-packages/
но это не помогло. site-packages/
rwx
для www-данных, но это не работает. В конце: какой самый простой способ pip install
пакет, который может использоваться всеми пользователями, включая www-data
?
Запустите PIP с пользователем root.
Это должно решить проблему.
Я рекомендую вам попробовать решение, которое xotihcan опубликовано первым, поскольку это простой способ сделать большинство модулей python доступными для всех пользователей, включая www-data. Однако это не работает для каждого модуля python. Если это не работает для вас или вы просто хотите установить модули для пользователя www-data, тогда используйте следующие команды:
sudo mkdir /var/www/.local sudo mkdir /var/www/.cache sudo chown www-data.www-data /var/www/.local sudo chown www-data.www-data /var/www/.cache sudo -H -u www-data pip install CoolProp
У меня была такая же проблема, пытаясь сделать модуль pyro4 Python доступным для использования www-данных. Есть и другой способ сделать это, но это связано с некоторыми даже более грязными хакерами. Для получения дополнительной информации проверьте мой вопрос / ответ @ Как правильно вызвать Python Pyro-клиент с помощью PHP и веб-сервера Apache?