Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/04/2024, à 19:35

Valérie_z

Pas de chargement de Module OpenCV Python dans une webapp (sur Apache)

Bonjour,

J'utilise Python sous Apache, avec mod_python.publisher. Dans ma configuration, j'ai un VirtualHost dans lequel les lignes suivantes sont ajoutées :

<VirtualHost *:80>
        (...)
        AddHandler mod_python .py
        PythonHandler mod_python.publisher
        PythonDebug On
        (...)
</VirtualHost>

Le souci est que dans la page web que je charge, je ne peux pas importer le module Opencv qui m'interresse pour traiter un flux vidéo, alors que d'autres modules passent sans problème.
Pour prendre un exemple simple,

import numpy 
# print(cv2.__version__)

def index(req):
    message = """
    <html>
    <head><title>Test</title></head>
    <body>
    <p>Coucou tout le monde</p></body></html>
    """
    return message

===> OK
tandis que

import cv2
print(cv2.__version__)

def index(req):
    message = """
    <html>
    <head><title>Test</title></head>
    <body>
    <p>Coucou tout le monde</p></body></html>
    """
    return message

===> Ne passe pas : ModuleNotFoundError: No module named 'cv2'
(le module Opencv est bien entendu installé, et apparaît dans pip3 list).

Quelqu'un aurait une idée ?
Merci

EDIT : Alors visiblement, le problème est le même sans apache, mais avec les librairies natives de Python. Dès lors qu'on exécute une page web via localhost, impossible de charger cv2. Exemple avec un petit serveur CGI lancé dans un terminal. Une fois avec l'import de numpy, l'autre avec cv2 :

import http.server
import numpy

port = 80
address = ("", port)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/"]
httpd = server(address, handler)
print(f"Serveur démarré sur le PORT {port}")
httpd.serve_forever()

===> Démarrage du script ok, le serveur tourne et permet d'appeler des pages en localhost


import http.server
import cv2

port = 80
address = ("", port)
server = http.server.HTTPServer
handler = http.server.CGIHTTPRequestHandler
handler.cgi_directories = ["/"]
httpd = server(address, handler)
print(f"Serveur démarré sur le PORT {port}")
httpd.serve_forever()

===> échec démarrage : ModuleNotFoundError: No module named 'cv2'

Quelqu'un sait comment utiliser Opencv via web avec localhost, ou connaîtrait un équivalent compatible web pour traiter les flux vidéo ?
Merci

Dernière modification par Valérie_z (Le 11/04/2024, à 22:07)


PC1 : 12e Gen Intel® Core™ i9-12900 x 24 CPU 5.10 GHz - 32.0 Gio de RAM - Sous Ubuntu 22.04.1 LTS (64 bits) - Noyau : 6.2.0-26-generic
PC2 :  Intel® Core™2 CPU 6700 @ 2.66GHz - 3,8 Gio de RAM - Sous Ubuntu 18.04 LTS (64 bits) - Noyau : 4.15.0-197-generic
PC3 : AMD® Ryzen 9 6900HX - 8 coeurs x 4.90 GHz - 32 GO de RAM DDR5 - Sous Ubuntu 22.04.3 LTS (64 bits) - Noyau : 6.5.0-35-generic

Hors ligne