Se connecter

Informatique

Linux

Sujet : [Debian] Apache2 - CGI - Python : importation de module ?!
1
[Soft]Ware
Niveau 40
08 mars 2020 à 18:15:41

Salut :ok:

Bon déjà j'ai hésité à poster ici ou sur le forum Programmation... Finalement je pense que c'est plutôt une erreur de permissions dans l'OS ou quelque chose comme ça... :doute:

J'utilise Apache2 configuré avec SSL dans une VM qui tourne sous Debian Buster.

Je veux mettre en place un client OpenID Connect en Python. Donc j'utilise le CGI pour que ça marche avec Apache2.

J'ai un problème de base :
J'arrive pas à importer mon module !
import oic
J'ai une erreur 500, voire pas du tout de message.
Dans les logs d'apache j'ai ModuleNotFoundError: No module named 'oic'

Pourtant si je fais la même chose en exécutant le même script manuellement, ça fonctionne.

J'ai vérifié le path avec
import sys raise RuntimeError(sys.path)

et le chemin du module est bien présent dans le path, que ce soit exécuté manuellement ou via apache

le module se trouve dans /home/user/.local/lib/python3.7/site-packages
avec droits de lecture et d'exécution pour tout le monde

le script.py executé avec CGI appartient au même user

dans ma config apache j'ai ajouté la ligne
SetEnv PYTHONPATH "/home/user/.local/lib/python3.7/site-packages"
mais ça fonctionne pas mieux...

Voilà donc j'me sens bêtement bloqué, je ne sais pas quoi faire :(

De l'aide ? :(

:merci:

tsez93
Niveau 10
09 mars 2020 à 03:53:44

user est-il le compte apache2?
pourquoi utiliser CGI plutôt que WSGI ?

A ta place, je créerais un compte spécifique pour ton programme Python, j'utiliserais mod_wsgi (ou mod_wsgi-express) et demanderais à WSGI d'utiliser ce compte.

[Soft]Ware
Niveau 40
09 mars 2020 à 19:20:23

Le 09 mars 2020 à 03:53:44 tsez93 a écrit :
user est-il le compte apache2?

Non, c'est mon compte
Et le script.py appartient aussi à cet user
Tout comme les autres fichiers.php qui fonctionnent correctement.

pourquoi utiliser CGI plutôt que WSGI ?

Parce que jusqu'à ton poste je ne connaissais pas l'existence de WSGI :noel:
C'est la première fois que je fais autre chose que du PHP/JS en Web, et en cherchant comment faire pour utiliser du Python je suis tombé uniquement sur CGI et sur mod_python qui n'est plus maintenu depuis 2013.

A ta place, je créerais un compte spécifique pour ton programme Python, j'utiliserais mod_wsgi (ou mod_wsgi-express) et demanderais à WSGI d'utiliser ce compte.

OK pourquoi pas, je vais aller regarder ça :ok:

Grosbras
Niveau 24
10 mars 2020 à 22:21:52

Le mieux pour du Python, ça reste d'avoir un environnement spécifique (pipenv, miniconda, anaconda,...) pour avoir une version figée de Python et des packages pour un projet spécifique. Si tu te bases sur des packages systèmes ou des packages utilisateurs, tu vas avoir des problèmes à long terme (autres machines, autre OS, autre projet qui n'utilise pas la même version de package,...). Sans compter les problèmes de permissions potentielles liées au fait que www-data n'a pas forcément les droits en lecture sur ton répertoire utilisateur (et en terme de sécurité, c'est mieux ainsi).

[Soft]Ware
Niveau 40
12 mars 2020 à 18:26:24

Bon j'ai réussi à importer mon module avec CGI, de manière assez simple finalement :
Je me suis demandé pourquoi il se trouvait dans mon home, parce que après tout c'est pas moi qui l'ai voulu.

Donc je l'ai copié ailleurs
sudo cp -r ~/.local/lib/python3.7/site-packages/oic /usr/lib/python3.7/ sudo cp -r ~/.local/lib/python3.7/site-packages/oic-1.2.0.dist-info /usr/lib/python3.7/
et c'est bon

1
Sujet : [Debian] Apache2 - CGI - Python : importation de module ?!
   Retour haut de page
Consulter la version web de cette page