I’ve been following Sentdex’ Flask tutorial. He’s using a Venv to set up his Flask, but didn’t set his Python up to work with a Venv. I’ve tried installing Flask globally – yet it still doesn’t work. Trying to browse to the server returns a 500 Internal Server Error
I’m getting the usual no module named flask
error.
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()
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>
Advertisement
Answer
As is polite behaviour when finding the solution, I googled around a bit more, and somehow managed to find a solution from a YouTube commment by Nathan Nichols here:
- Edit
/etc/apache2/sites-available/FlaskApp.conf
Add the following two lines before the “WSGIScriptAlias” line:
WSGIDaemonProcess FlaskApp python-path=/var/www/FlaskApp:/var/www/FlaskApp/FlaskApp/venv/lib/python2.7/site-packages WSGIProcessGroup FlaskApp
- Restart Apache with “service apache2 restart”
I of course replaced the Python version with python3.5, which is what I’m running.