python开发程序如何给用户使用_如何安装Python软件包以供所有用户全局使用(包括www-data)...

I thought I throw together a little dirty script on our server (Ubuntu 16.04) that gives me some plain text output from Python.

I want to call the script like this from PHP (I know there should be some escaping done, but it's just a test currently):

$command = '/usr/local/bin/script.py';

$output = shell_exec($command);

echo $output;

?>

This is script.py owned by www-data mode 774

#!/usr/bin/python

import CoolProp.CoolProp as CP

import argparse

print('Hallo Welt')

If I comment out the CoolProp import it works. But somehow the package cannot be reached by www-dataand so the script returns nothing.

As you see I want to use the Package CoolProp.

So I tried installing it with pip install CoolProp=> That works for my local user. But now when called from user www-data

After I tried to install it with a target --target=/usr/local/lib/site-packages/ but that did not help.

I tried to change the ACL on the complete site-packages/ to rwx

for www-data but that does not work as well.

In the end: What is the simplest way to pip install a package that can be used by all users including www-data?

解决方案

I recommend that you try the solution that xotihcan posted first as that is the easy way to make most python modules available to all users including www-data. However it doesn't work for every python module. If that doesn't work for you or you just want to install modules for the www-data user only then use the following commands:

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

I had this same issue trying to make the Python pyro4 module available for the www-data use. There is another way to do it but it involves some even dirtier hackery. For more details check out my question/answer @ How do I properly call a Python Pyro client using PHP and Apache web server?


版权声明:本文为weixin_39572442原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。