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 flaskerror.
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.