He estado siguiendo el tutorial de Flask de Sentdex. Está usando un Venv para configurar su Flask, pero no configuró su Python para que funcione con un Venv. Intenté instalar Flask globalmente, pero todavía no funciona. Intentar navegar hasta el servidor devuelve un error interno del servidor 500
Recibo el error habitual de no module named flask .
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 __name__ == "__main__": app.run()matrazapp.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-base de datos.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>Perdí unos 25 minutos para encontrar una solución a esto y después de seguir todos los demás recursos que pude encontrar, también hice lo siguiente:
sudo apt-get install libapache2-mod-wsgi-py3Asegúrese de tener '-py3' al final de libapache2-mod-wsgi-py3 o el tiempo de ejecución se establecerá de forma predeterminada en Python2.7
Como es un comportamiento cortés al encontrar la solución, busqué en Google un poco más y de alguna manera logré encontrar una solución en un comentario de YouTube de Nathan Nichols aquí:
/etc/apache2/sites-available/FlaskApp.confAgregue las siguientes dos líneas antes de la línea "WSGIScriptAlias":
WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages WSGIProcessGroup FlaskAppPor supuesto, reemplacé la versión de Python con python3.5, que es lo que estoy ejecutando.
Primero instale python-virtualenv
Luego, desde el directorio de la aplicación Flask donde colocas los archivos python de pelucas, ejecuta
virtualenv env
Esto creará el directorio env dentro del directorio Flask y contiene la instalación local de python.
A continuación, active el entorno virtual con este comando source env/bin/activate
Después de activar el entorno virtual, ejecute pip install flask
Ejecutar pip --version
Verás algo como esto
pip 19.0.3 de /var/www/html/flaskapp/env/local/lib/python2.7/site-packages/pip (python 2.7)
Copie esta ruta de Python
WSGIDaemonProcess FlaskApp python-path=/var/www/html/flaskapp:/var/www/html/flaskapp/env/local/lib/python2.7/site-packages WSGIProcessGroup FlaskAppAgregue las líneas anteriores en FlaskApp.conf en el directorio de sitios disponibles de apache
Tenga en cuenta que ponga python-path lo que obtiene después de ejecutar pip --version