Flask Bug on Python 3.4? Development server can't run if app contains relative imports -


by design, python 3 cannot run module contains relative imports script. attempting yields following error:

$ python mypackage/run.py [...traceback...] systemerror: parent module '' not loaded, cannot perform relative import 

the solution invoke module python -m mypackage.run instead of more familiar python mypackage/run.py.

in flask, latter how 1 runs development server. however, flask development server spawns child process reloads code (and subsequently reloads code when files changed on disk).

the result this:

$ python -m mypackage.run  * running on http://127.0.0.1:5000/  * restarting reloader [...traceback...] systemerror: parent module '' not loaded, cannot perform relative import 

so server starts properly, child process reloads code improperly.

this due way reloader works. tends mess python path if you're doing in unexpected ways, such calling inner module directly run app.

move run.py out of project completely. useful in development anyway, production deployment use application directly rather dev server.

/my_project/     /run.py     /my_package/         /__init__.py         /my_module.py 

execute run.py my_project directory (or otherwise put my_project on python path). simple, like:

from my_project_pkg import app app.run(debug=true) 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

ios - Possible to get UIButton sizeThatFits to work? -