web-dev-qa-db-fra.com

Flask - WSGI - Aucun module nommé 'flask'

J'ai suivi le didacticiel de Sentdex 'Flask. Il utilise un Venv pour installer sa fiole, mais n'a pas configuré son Python pour qu'il travaille avec un Venv. J'ai essayé d'installer Flask globalement, mais cela ne fonctionne toujours pas. Tenter de naviguer sur le serveur renvoie une erreur de 500 serveur interne

Je reçois le no module named flaskerror habituel.

errorFGL.log

[Sun Feb 05 11:22:32.043925 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] mod_wsgi (pid=26340): Target WSGI script '/var/www-fgl/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
[Sun Feb 05 11:22:32.044105 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] mod_wsgi (pid=26340): Exception occurred processing WSGI script '/var/www-fgl/FlaskApp/flaskapp.wsgi'.
[Sun Feb 05 11:22:32.044243 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] Traceback (most recent call last):
[Sun Feb 05 11:22:32.045011 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]   File "/var/www-fgl/FlaskApp/flaskapp.wsgi", line 8, in <module>
[Sun Feb 05 11:22:32.045070 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]     from FlaskApp import app as application
[Sun Feb 05 11:22:32.045549 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]   File "/var/www-fgl/FlaskApp/FlaskApp/__init__.py", line 1, in <module>
[Sun Feb 05 11:22:32.045594 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814]     from flask import Flask
[Sun Feb 05 11:22:32.045689 2017] [wsgi:error] [pid 26340:tid 118578538694400] [client 86.52.205.25:49814] ImportError: No module named 'flask'

__init__.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def homepage():
    return "Success"

if __== "__main__":
    app.run()

flaskapp.wsgi

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)

sys.path.insert(0,"/var/www-fgl/FlaskApp/")

from FlaskApp import app as application
application.secret_key = '[REDACTED]'

fgl-database.conf

<VirtualHost *:80>
        ServerName [REDACTED]
        WSGIScriptAlias / /var/www-fgl/FlaskApp/flaskapp.wsgi
        <Directory /var/www-fgl>
            Require all granted
        </Directory>
        Alias /static /var/www-fgl/FlaskApp/FlaskApp/static
        <Directory /var/www-fgl/FlaskApp/FlaskApp/static/>
            Require all granted
        </Directory>
        ErrorLog ${Apache_LOG_DIR}/errorFGL.log
        LogLevel warn
        CustomLog ${Apache_LOG_DIR}/accessFGL.log combined




</VirtualHost>
6
Davixxa

En tant que polie lors de la recherche de la solution, j'ai cherché un peu plus sur Google et, d'une manière ou d'une autre, j'ai réussi à trouver une solution à partir d'un commentaire de Nathan Nichols sur YouTube:

https://www.digitalocean.com/community/tutorials/how-to-run-Django-with-mod_wsgi-and-Apache-with-a-virtualenv-python-environment-on-a-dedebian-vps

  1. Éditer /etc/Apache2/sites-available/FlaskApp.conf
  2. Ajoutez les deux lignes suivantes avant la ligne "WSGIScriptAlias":

    WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages
    WSGIProcessGroup FlaskApp
    
  3. Redémarrez Apache avec "service Apache2 restart"

Bien sûr, j'ai remplacé la version Python par python3.5, qui est ce que je cours.

6
Davixxa
  1. Selon http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html .

  2. Vous devriez éditer /etc/Apache2/sites-available/FlaskApp.conf

  3. Ajoutez-les au-dessus de la WSGIScriptAlias 

    WSGIDaemonProcess FlaskApp python-home=/var/www/FlaskApp/FlaskApp/venv/FlaskAppWSGIProcessGroup FlaskApp

J'ai rencontré le même problème et le réparer en passant.

0
NingAnMe