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
Post a Comment