CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Debian] Apache2 - CGI - Python : importation de module ?!

DébutPage précedente
1
Page suivantePage suivante
[Soft]Ware [Soft]Ware
MP
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 tsez93
MP
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 [Soft]Ware
MP
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 Grosbras
MP
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 [Soft]Ware
MP
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

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment