Flask, Nginx, uWSGI Python Application not found

15,904

Solution 1

Fixed by adding PythonPath in my ini file, since I have my python files in an app subdirectory and by using the filename as the module.

pp=/home/user/projects/python/flask/project/app
module=filename

Solution 2

You are requesting a 'run' module while your script is 'hello', infact:

ImportError: No module named run

Share:
15,904
Andreas
Author by

Andreas

Updated on June 16, 2022

Comments

  • Andreas
    Andreas almost 2 years

    I'm trying to setup NGINX, uWSGI and Flask. I'm currently getting,


    uWSGI Error

    Python application not found


    I get some strange errors in my uwsgi error file, which you can find at the bottom of my post.

    I'll get straight to it, this is on a fresh VPS running Ubuntu 13.04 64bit, these are the commands I ran.

    • sudo apt-get update
    • sudo apt-get install build-essential
    • sudo apt-get install python-dev
    • sudo apt-get install python-pip
    • sudo apt-get install nginx
    • sudo apt-get install uwsgi
    • sudo apt-get install uwsgi-plugin-python
    • sudo pip install virtualenv

    I then created a virtual environment, activated it and ran pip install flask I then made a folder called app and place a file called hello.py inside the same folder

    /project
        /app
            -hello.py
        /bin
        /include
        /lib
        /local
    

    This is my NGINX file (the nginx error file is empty)

    server {
        listen 80;
    
        server_name project.domain.net;
    
        location / {
            try_files $uri @app;
        }
    
        location @app {
            include uwsgi_params;
            uwsgi_pass unix:/tmp/uwsgi.sock;
        }
    
        location ~ /\. {
            deny all;
        }
    }
    

    This is my uWSGI ini file

    [uwsgi]
    chdir = /home/user/projects/python/flask/project
    uid = www-data
    gid = www-data
    chmod-socket = 666
    plugin = python
    socket = /tmp/uwsgi.sock
    module = run
    callable = app
    virtualenv = /home/user/projects/python/flask/project
    

    This is my hello.py file

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello_word():
        return "Hello World!"
    
    if __name__ == "__main__":
        app.run()
    

    This is my uWSGI error file https://p.kk7.me/sepukinulu.applescript it's quite long so I figured I would paste it in a pastebin-style website. I can edit my post to include it here if this is not ok.

    Any help would be greatly appreciated!