Как установить пакет Python для глобального использования всеми пользователями (включая www-data)

Мне показалось, что я сбрасываю на нашем сервере небольшой грязный скрипт (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 .

  1. Поэтому я попытался установить его с помощью pip install CoolProp => Это работает для моего локального пользователя. Но теперь, когда вызывается из пользовательских www-data
  2. После того, как я попытался установить его с целью --target=/usr/local/lib/site-packages/ но это не помогло.
  3. Я попытался изменить ACL на полных 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?