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

2024-03-28 11:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我在服务器(Ubuntu16.04)上加了一个脏脚本,它给了我一些来自Python的纯文本输出。

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

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

这是由www数据模式拥有的script.py

#!/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. 我试图将完整的site-packages/上的ACL更改为rwx 对于www数据,但这并不起作用。

最后:什么是最简单的方法来pip install一个所有用户都可以使用的包,包括www-data


Tags: installpip数据pyimport脚本outputdata
2条回答

我建议您尝试先发布xotihcan的解决方案,因为这是使所有用户(包括www数据)都可以使用大多数python模块的简单方法。但是它并不适用于每个python模块。如果这对您不起作用,或者您只想为www数据用户安装模块,请使用以下命令:

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数据使用时遇到了同样的问题。有另一种方法,但它涉及一些甚至更肮脏的黑客。有关详细信息,请查看我的问题/答案@How do I properly call a Python Pyro client using PHP and Apache web server?

与根用户一起运行PIP。

这应该能解决问题。

相关问题 更多 >