35

I am having an issue deploying a flask app on apache2 using wsgi. I have posted the error logs and config files below. I have tried moving things around, renaming them, etc, but all give me an internal server error. Not sure why I'm getting the import error. Any input / suggestions are appreciated, thanks!

Here is my apache error.log

[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Target WSGI script '/sites/flaskfirst/wsgi.py' cannot be loaded as Python module.
[Sun Sep 12 20:47:59 2010] [error] [client] mod_wsgi (pid=9753): Exception occurred processing WSGI script '/sites/flaskfirst/wsgi.py'.
[Sun Sep 12 20:47:59 2010] [error] [client] Traceback (most recent call last):
[Sun Sep 12 20:47:59 2010] [error] [client]   File "/sites/flaskfirst/wsgi.py", line 1, in <module>
[Sun Sep 12 20:47:59 2010] [error] [client]     from app import app as application
[Sun Sep 12 20:47:59 2010] [error] [client] ImportError: No module named app

wsgi.py

# This is wsgi.py
from app import app as application

app.py

# This is app.py
from flask import Flask, render_template
import settings

app = Flask(__name__)
app.debug = settings.DEBUG

from views.homepage import *
from views.events import *
from views.submit import *
from views.feed import *

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

Here is the basics of the directory tree, to give you an idea.

/flaskfirst/
    /static/
    /templates/
    /views/
    __init__.py
    app.py
    wsgi.py

Here is the apache virtualhost file

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName crath.org
        DocumentRoot /sites/flaskfirst

        # WSGI Settings
        WSGIScriptAlias / /sites/flaskfirst/wsgi.py
        WSGIDaemonProcess flaskfirst user=sreustle group=general processes=1 threads=10
        WSGIProcessGroup flaskfirst

        # Static Directories
        Alias /static /sites/flaskfirst/static/
        <Location "/static">
                SetHandler None
        </Location>

</VirtualHost>

2 Answers 2

32

Thanks to zarf and damjan on irc.freenode.org at #pocoo, they were able to help me get this fixed. The problem was the PythonPath was not correct. We fixed this by using the following wsgi.py

import sys
sys.path.insert(0, "/sites/flaskfirst")

from app import app
application = app
Sign up to request clarification or add additional context in comments.

1 Comment

Was having the same issue. I added it to WSGIDaemonProcess appName python-path=/home/... in my httpd config file. Not sure if that is the correct place or not, but FWIW is an option. More about WSGIDaemonProcess: [link] (code.google.com/p/modwsgi/wiki/…)
4

I used your solution to get it working but it kept duplicating the path in sys.path (you can write it out to see if it happens to you) so I made a little modification:

import sys
flaskfirst = "/sites/flaskfirst"
if not flaskfirst in sys.path:
    sys.path.insert(0, flaskfirst)

from app import app
application = app

That way it's only included once

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.