How can I run the full Flask Tutorial app in the Wingware IDE?
I've been using Flask under Wing Pro 7.2 for some time, and can get control because I start Flask by doing app.run() in Wing.
I conceived a wish to trace through the official working version of the completed tutorial, obtained by
git clone https://github.com/pallets/flask
This works fine (using 'flask run'), and I now have the complete source. But there's no app.run() anywhere. I tried putting one in init.py:
def create_app(test_config=None):
#...
db.init_app(app)
return app
RUN = True
if RUN:
app= create_app()
app.run()
and flask starts up, but throws an error on request 'localhost:5000/', which normally fires up a database form.
Is there a starting point in the Python code somewhere?
Or, is it possible to attach Wing to a running flask, and tell it about the source files? There is a bit in the Wing manual about attaching, but it seems to demand information about the target that we lack.
I managed to start the tutorial by creating a file main.py in the same directory as the flaskr package, with this contents:
import flaskr
app = flaskr.create_app()
app.debug = False
app.run(use_reloader=True)
Then I set this as the main debug file in Wing.
To make debugging work correctly, you may also need to set the Python Executable in Project Properties (from the Project menu) to the Python command line or activated env you want to use.
Also, it is important to set Debug/Execute > Debug Child Processes in Project Properties to Always Debug Child Processes. Otherwise the process actually running the app code is not debugged.
This works but results in a SQL error because the table 'post' does not exist if you did not already run the following first to initialize the database:
$ export FLASK_APP=flaskr
$ export FLASK_ENV=development
$ flask init-db
Once I did that, everything worked for me.
I'm new to Flask. To launch the flask app, I did python -m flask run but I repeatedly get the error:
Failed to find Flask application or factory in module "app". Use "FLASK_APP=app:name to specify one.
I am using a virtualenv on a Windows 10 machine
from flask import Flask
app = Flask(__name__)
#app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
I expected a web server to start and to be able to navigate to localhost http://127.0.0.1:5000/ where I could view Hello, World! on my browser, but that never happened.
Instead of just "flask" use FLASK_APP=theflaskapp.py, like what Marco suggested:
env FLASK_APP=theflaskapp.py python -m flask run
This should fix it, if not, make sure you are executing the command to run the script in the same directory as it. You should also check if the problem is in flask or not by running "python theflaskapp.py" (In the same directory as the flask app still) and see if it works at all.
Reproducing the problem, and fixing it
Hello, I have reproduced the problem
This is the error code:
Error: Failed to find Flask application or factory in module
"src.app". Use "FLASK_APP=src.app:name to specify one.
Steps of reproducing the error:
Create a file called app.py
inside app.py put this code:
from flask import Flask
def create_app():
app = Flask("abc")
#app.route('/')
def hello_world():
return 'Hello, World!'
Or let the file be empty, like this:
# This is an empty file
# There is no flask application here
Inside CLI run these commands:
export FLASK_APP=app.py
flask run
watch the error appear on the screen
Solution 1 :
make the function return the app
Clearly create a variable called app and make it equal to the return value of the function, like this:
from flask import Flask
def create_app():
app = Flask(__name__)
#app.route('/')
def hello_world():
return 'Hello, World!'
return app
app = create_app()
Solution 2: Get the app outside of the function:
from flask import Flask
app = Flask("abc")
#app.route('/')
def hello_world():
return 'Hello, World!'
solution for flask Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.
on windows when you tried set FLASKAPP=appname.py if your using PowerShell and if get the above error try this 👇👇
$env:FLASK_APP = "filename"
$env:FLASK_ENV = "development"
Flask run
try it if your having trouble launching the flask app.
You need to specify what file you want to work with. Try this.
For Windows:
set FLASK_APP=app.py
python -m flask run
For Mac OS and Linux:
export FLASK_APP=app.py
python -m flask run
I had a similar problem. It seems to work fine from the command prompt with python app.py. However, it would fail to launch with VS Code Debug.
The trick was to add:
server = app.server
before calling the app.run_server() portion
super simple in my case, and almost stupid...I had forgotten to save the file (CTRL+S), and I got exactly the same error. Once I saved the file, it worked directly!
Instead of providing a super straightforward "try this" suggestion, I'd recommend going straight to the flask source code to where this exception gets thrown, and reverse engineer from there. https://github.com/pallets/flask/blob/main/src/flask/cli.py#L78-L82
You can open this in your editor by going to the site-packages/flask/cli.py file and setting breakpoints around where this error gets thrown, and poke around from there.
Another working option is executing this command instead of flask run :
flask run --host=0.0.0.0
I had the same issue and I tried all the mentioned answers here but couldn't work finally this did the trick.
I'm getting the same error. The problem is you have to set the environment variable FLASK_APP in current project.
However, I have easiest way to solve this problem. Instead of using flask run command you can use python app.py.
"app.py" is your application entry point.
The simplest way to run your app without getting any issue is to create the app then run python app.py
from flask import (
Flask,
jsonify
)
# Function that create the app
def create_app(test_config=None ):
# create and configure the app
app = Flask(__name__)
# Simple route
#app.route('/')
def hello_world():
return jsonify({
"status": "success",
"message": "Hello World!"
})
return app # do not foget to return the app
APP = create_app()
if __name__ == '__main__':
# APP.run(host='0.0.0.0', port=5000, debug=True)
APP.run(debug=True)
On venv and my Windows10 only this syntax works:
set FLASK_APP=name_of_file:name_of_var_app
If file is application.py and 'app = Flask(__name__)',
run:
set FLASK_APP=application:app
You should change the name of the file, I have the same problem. So, I changed the name of the app file and It works for me. At first my app file name is 'socket.py' and I change it to 'app.py'.
My problem was that the python file didn't have execute permissions:
chmod a+x app.py
Similar issue! I was running the code in vs code. Installed python extension and after selecting a different python interpreter( in my case 3.10.5 64 bit), got a play button on the top right corner of my vs code interface.
That solved the issue for me.
In my case was a very simple issue, the activate.bat file was setup as Macintosh (CR) I changed to Windows (CR LF) and that worked for me.
Explanation: In windows OS, for the instruction to take effect, for example [set FLASK_ENV = development] a strong carriage return is needed, such as the (CR LF), that is what I could verify in my case. You can try to run the SET instruction in the console, cmd, and check if the FLASK settings are reflected. I understand that it is more a problem of the configuration of the environment and not of the application itself.
Try removing the spaces from this line of code, this is what fixed it for me when I had this error:
app=Flask(__name__)
I am new in python. I am trying to deploy python code on apache server for i.e i have created flask api. So for apache i have installed XAMPP and changed my httpd.conf to execute python on apache. It works well!! Here is code example which is working
Code working:
#!C:\Users\test.lab\AppData\Local\Continuum\anaconda3\envs\myproject\python.exe
# enable debugging
print("Content-type: text/html\n")
print ("Hello Python Web Browser!! This is cool!!")
But when I tried to import that through 500 Error, Here is the code
#!C:\Users\test.lab\AppData\Local\Continuum\anaconda3\envs\myproject\python.exe
# enable debugging
from flask import Flask
app = Flask(__name__)
#app.route('/')
def index():
return 'testing'
if __name__ == '__main__':
app.run(debug = True)
flask is installed on my environment (myproject). When I run through command like python test.py and it works.
Flask has it's own development web server.
Using python myfile.py which will work properly as a webserver (no need for apache on development).
If you still want do deploy on Apache, Flask have some info on how to do so, docs: http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/
Special attention to this: http://flask.pocoo.org/docs/1.0/deploying/mod_wsgi/#creating-a-wsgi-file
I keep getting this error flask.cli.NoAppException: The file/path provided (new_app.py) does not appear to exist. Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py it goes away after I restart the Flask server.
I am running flask run in the correct directory where my app is. This just started happening after working for 2 weeks. I've read that it could be due to an import error, but I am not finding any modules that are not installed on my virutalenv.
from flask import Flask
app = Flask(__name__)
app.debug=True
Most likely you haven't set the FLASK_APP environment variable.
To run the application you can either use the flask command or
python’s -m switch with Flask. Before you can do that you need to tell
your terminal the application to work with by exporting the FLASK_APP
environment variable:
$ export FLASK_APP=hello.py
$ flask run * Running on http://127.0.0.1:5000/
If you are on Windows you need to use set
instead of export.
Alternatively you can use python -m flask:
$ export FLASK_APP=hello.py
$ python -m flask run * Running on http://127.0.0.1:5000/
EDIT
If you have FLASK_APP set then try adding this to new_app.py
app.run(debug=True, port=8800)
Or if you're on Windows:
if __name__ == '__main__':
app.run(debug=True, port=8800)
And then just execute the app with python new_app.py.
I'm having problems getting dependencies installed on Heroku. I have a Python app that I want to deploy but every time I try and load the site I get ImportError's for both flask and sqlalchemy. I get these same errors if I run: heroku run python and try and import the modules interactively. I'm very puzzled and can't seem to solve this issue I was hoping someone else would know a solution. The details of the relevant files are down below.
Profile:
web: python app.py
requirements.txt:
Flask==0.9
Jinja2==2.6
SQLAlchemy==0.7.9
Werkzeug==0.8.3
app.py:
import os, flask, sqlalchemy
from gateway import server
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
server.app.run(host='0.0.0.0', port=port)
EDIT: I ended up restarting my application by following the Heroku instructions step-by-step and then copying over all my old code. This seemed to fix the problem for me so my problems seem to be a weird edge case.
I think your error may be in the "from gateway import server". It's not clear to me what that line's doing, and that code doesn't work when I try to run it locally on my machine.
Here's similar code, but in a format that's more familiar to me - I've deployed this to Heroku successfully in the past:
import os
from flask import Flask
from flask import render_template
app = Flask (__name__)
#app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
Can you run this code locally?
Check the Heroku Flash tutorial
https://devcenter.heroku.com/articles/python