Your WSGIPath refers to a file that does not exist
Question: I'm trying to upload my Flask application to AWS however I receive an error on
doing so:

> Your WSGIPath refers to a file that does not exist.

After doing some digging online I found that in the .ebextensions folder, I
should specify the path. There was not a .ebextensions folder so I created one
and added the following code to a file named settings.config:

    
    
    option_settings:
      "aws:elasticbeanstalk:container:python":
        WSGIPath: project/application.py
    

the WSGIPath is the correct path to the application.py file so I'm not sure
what raises this error. Am I changing the WSGIPath right, is there a better
way or is there an issue with something else which causes this to happen?
Thanks.


Answer: There's a lot of configuration issues that can arise with Flask deployed on
AWS. I was running into a similar issue as you, so I can at least show you
what I did to resolve the WSGI error.

First, apparently you can do this without the .ebextensions folder (see this
post [here](http://stackoverflow.com/questions/20558747/how-to-deploy-
structured-flask-app-on-aws-elastic-beanstalk). and look at davetw12's answer.
However, be aware that while this works, I'm not entirely sure that davetw12's
conclusion about .ebextensions is correct, based on some of the comments
below). Instead, (in the Terminal), I navigated to my project at the same
level as my .elasticbeanstalk directory and used the command `eb config`. This
will open up a list of options you can set to configure your beanstalk
application. Go down through the options until you find the WSGI path. I
notice you have yours set to `project/application.py`, however, this should
not include the folder reference, just `application.py`. Here is how it looks
on my Mac in the terminal (WSGI path is near the bottom).

![enter image description here](http://i.stack.imgur.com/udC5J.png)

Note that once you get that set, EB will probably redeploy. That's fine. Let
it.

Once you get that set, go into your application.py file and make sure you call
your app `application`. For example, mine looks like this:

    
    
    from flask import Flask
    from flask import render_template
    application = Flask(__name__)
    
    @application.route('/')
    @application.route('/index')
    def index():
        return render_template('index.html',
                               title='Home')
    

This took away the WSGI path error - although I still had to fix some other
issues following this :-) But that is a different set of questions.

