Comment installer Python Package pour une utilisation globale par tous les utilisateurs (y compris www-data)

Je pensais lancer un petit script sale sur notre serveur (Ubuntu 16.04), ce qui me permet de générer du texte en clair à partir de Python.

Je veux appeler le script comme ceci à partir de PHP (je sais qu’il devrait y avoir des échappées, mais ce n’est qu’un test actuellement):

 

Ceci est script.py détenu par le mode www-data 774

 #!/usr/bin/python import CoolProp.CoolProp as CP import argparse print('Hallo Welt') 

Si je commente l’importation de CoolProp cela fonctionne. Mais de toute façon, le paquet ne peut pas être atteint par www-data et le script ne renvoie donc rien.

Comme vous le voyez, je souhaite utiliser le package CoolProp .

  1. J’ai donc essayé de l’installer avec pip install CoolProp => Cela fonctionne pour mon utilisateur local. Mais maintenant, quand on appelle depuis l’utilisateur www-data
  2. Après avoir essayé de l’installer avec une cible --target=/usr/local/lib/site-packages/ mais cela n’a pas aidé.
  3. J’ai essayé de changer la liste de contrôle d’access sur l’ site-packages/ à rwx pour www-data mais cela ne fonctionne pas aussi bien.

Au final: Quel est le moyen le plus simple d’ pip install un paquet pouvant être utilisé par tous les utilisateurs, y compris www-data ?

Je vous recommande d’essayer la solution que xotihcan a publiée en premier car il s’agit du moyen simple de rendre la plupart des modules python disponibles à tous les utilisateurs, y compris www-data. Cependant, cela ne fonctionne pas pour tous les modules python. Si cela ne fonctionne pas pour vous ou si vous voulez simplement installer des modules pour l’utilisateur de www-data uniquement, utilisez les commandes suivantes:

 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 

J’ai eu ce même problème en essayant de rendre le module Python pyro4 disponible pour l’utilisation de www-data. Il y a une autre façon de le faire, mais cela implique un piratage encore plus sale. Pour plus de détails, consultez ma question / réponse @ Comment appeler correctement un client Python Pyro à l’aide du serveur Web PHP et Apache?

Exécutez PIP avec l’utilisateur root.

Cela devrait résoudre le problème.