如何安装Python包供所有用户(包括www-data)全局使用


How to install Python Package for global use by all users (incl. www-data)

我想我在我们的服务器(Ubuntu 16.04)上扔了一个小脏脚本,它给了我一些来自Python的纯文本输出。

我想从PHP调用这样的脚本(我知道应该有一些转义完成,但它只是一个测试目前):

<?php
$command = '/usr/local/bin/script.py';
$output = shell_exec($command);
echo $output;
?>

这是script.py,属于www-data模式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. 调用时
  3. 在我尝试用目标--target=/usr/local/lib/site-packages/安装它之后,但没有帮助。
  4. 我试图将完整site-packages/上的ACL更改为rwx

In end:什么是pip install一个可以被包括www-data在内的所有用户使用的包最简单的方法?

我建议您尝试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

我有同样的问题,试图使Python pyro4模块可用于www-data使用。还有另一种方法,但它涉及一些更肮脏的黑客行为。有关更多详细信息,请查看我的问题/答案@我如何使用PHP和Apache web服务器正确调用Python Pyro客户端?

以root用户运行PIP。

这应该能解决问题。